Avatar billede hrc Mester
14. november 2013 - 09:34 Der er 1 løsning

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:

delete from dbo.my_relation
where borger_id = 5000

Efterfølgende kører jeg et vilkårligt antal:

insert into dbo.my_relation
(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 single_user with rollback immediate
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?
Avatar billede hrc Mester
29. november 2013 - 10:29 #1
Lukker - ingen løsning herfra ... Jeg prøver at starte transaktionen efter jeg har lavet opdatering borgertabellen og skal til at opdatere de sekundære tabeller. Måske bliver det løsningen.
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