19. juni 2005 - 15:02Der er
6 kommentarer og 1 løsning
Transaktions manipulation
Er det på nogen måde muligt at få afvide lige inden en transaktion er ved at afslutte?
Kan man fra en procedure ,triggger mv, få afvide hvilken transaktion der benyttes?
Og hvorfor så disse spm: Jeg har en fejl behæftet 3.part applikation jeg ikke kan ændre men, hvis jeg kunne komme en trigger lign i basen der lige inden et commit laver et check og evt stopper den og laver rollback i nogla tilfælde vil det kunne løse problemet.
Du kan lave en prodedure som er defineret som autonomous_transaction og derfra kalde dit 3.parts product. Dette kan dog ikke lade sig gøre hvis 3pp selv comitter sit eget arbejde.
procedure call_3p is pragma autonomous_transaction; is begin call_to_3p; -- evt. check commit; exception when others then rollback; end;
3part comitter selv, Jeg har held til at kunne stoppe den, men problemet er at den gennemfører en del oprationer og først når den er færdig (dvs lige inden commit) er det muligt at bestemme om det burde forbydes og rulles tilbage.
kan du du tvinge den 3.part applikation til at ikke at lave en ny transaktion men at deltage i en eksisterende transaktion (2 phase commit styret af en transaction manager) ?
hvis ikke tror jeg at det ser skidt ud
jeg ville nok i så fald satse på at få det til at virke med en kompenserende transaktion fremfor rollback
Synes godt om
Slettet bruger
19. juni 2005 - 20:12#5
Hvis man 3.-partsprogrammet lige inden det afsluttende commit laver en opdatering mod en kendt tabel: Du kan låse tabellen fra en anden session. Dermed får du tid til at undersøge om du skal ophæve låsen og lade 3.partsprogrammet fortsætte, eller om du skal lukke 3.partsprogrammet ned.
Man låser en tabel med "LOCK TABLE TABLE_NAME IN EXCLUSIVE MODE"
Arne : Jeg har ikke mulighed for at wrappe transaktionen en min egen transaktion
joern: lyder interesant, jeg har netop gået en ny og lign vej. Idet jeg opretter en ny tabel og derpå laver en constraint der er deferable og defered.Den sætter jeg så snart jeg kan se den starter en transaktion til noget der går imod constrainten og først hvis 3.part retter sine egne data så opfylder jeg constrainten. Hvis 3part pludselig comitter inden data er iorden så vil constrinten blive checket, fejle og blive rullet tilbage automatisk
Der går nogen tid inden jeg kan se om det virker, men point for de gode ideer
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.