Blocking transactions .. igen.
Støder igen på BT'er. Denne gang er det ret underligt. Det er i forbindelse med CPR-opslag at jeg opdaterer en samling tabeller. Naturligvist primært borgertabellen, men der hænger også data på den. Ved oprettelse må jeg derfor lave en postquery-liste, der indeholder de scripts som skal køres efter jeg har oprettet borgeren og fået en primærnøgle. Først da, kan jeg tilknytte andre oplysninger.Det hele er pakket ind i en transaktion.
I hovedprogrammet kører det fint, men jeg har også et ajourkørselsprogram som ajourfører et sæt af relevante borgere. Koden fra hovedprogrammet er stort set kopieret, men i ajourkørslen får jeg en BT.
Ved eksisterende (som de altid er ved ajourkørsler) borgere undersøger jeg, de de allerede tilknyttede records for at se om de skal opdateres. Hvis der er ændringer må jeg slette dem og indsætte de nye, og her går det galt.
I PostQuery har jeg:
where borger_id = 5000
Efterfølgende kører jeg et vilkårligt antal:
(borger_id, organisation_id, dato, ...)
values
(...)
Slår jeg transaktion fra, så virker det, men den løsning er forkert.
Jeg har justeret databasens transaktionniveau:
alter database [<navn>] set read_committed_snapshot on
alter database [<navn>] set multi_user
Hvorfor kan jeg, i ajour-programmet, behørigt pakket ind i en transaktion, ikke indsætte i samme tabel som jeg lige har slettet i?