Avatar billede wizzcat Nybegynder
19. juni 2005 - 15:02 Der 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.
Avatar billede teepee Nybegynder
19. juni 2005 - 15:21 #1
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;
Avatar billede wizzcat Nybegynder
19. juni 2005 - 16:08 #2
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.
Avatar billede wizzcat Nybegynder
19. juni 2005 - 16:10 #3
jeg ved ikke om nogle af system tabellerne har informationen så man kunen fange det ved at lægge triggere på dem???
Avatar billede arne_v Ekspert
19. juni 2005 - 20:09 #4
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
Avatar billede 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"
Avatar billede wizzcat Nybegynder
19. juni 2005 - 21:00 #6
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
Avatar billede wizzcat Nybegynder
19. juni 2005 - 22:02 #7
Der går nogen tid inden jeg kan se om det virker, men point for de gode ideer
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester