Låsning af database.
Hejsa.Jeg har en C# applikation som anvender sql server database.
Når jeg opretter en ny post i databasen skal jeg bruge denne post´s autogenerede ID.
Jeg gør følgende:
Transaction.begin
Insert INTO Xxxxxxx
SELECT TOP 1 ID FROM Xxxxxx
Transaction.commit
Jeg låser databasen for at sikre at der ikke oprettes nye poster mellem min INSERT og min SELECT.
Hvis jeg debugger min c# applikation og pauser mellem INSERT og SELECT kan jeg dog fra en anden maskine stadig afvikle funktionen og ændre i data så min SELECT giver forkert ID retur.
Jeg anvender IsolationLevel.Serializable i min transaction. Jeg troede at denne måde sikrede imod at der kunne afvikles flere transaktioner til databasen samtidigt.
Mine commit og Rollback funktioner virker helt efter hensigten.
Hvad gør jeg galt?
Vh Flyver23