22. marts 2004 - 14:14Der er
7 kommentarer og 2 løsninger
sikker metode til at returnere det nye id efter insert
Hej
Jeg har læst flere spg herinde ang mit spg, men synes ikke rigtigt at der er et entydigt svar.
Jeg har dog fundet ud af at det kan være godt at benytte en stored procedure til at lave insert'en og returnere mit nye id. Dog er jeg lidt i tvivl om at en transaction kan klare opgaven.
begin trans insert into min_tabel ....... select ident_current('min_tabel') commit trans
Vil dette med sikkerhed altid give mig den id der er skabt med min insert ?
Med ident_current risikerer du at få et forkert id, hvis andre laver inserts også til samme tabel.
Om den problemstilling kan løses vis transaction og låsning, ved jeg ikke.
Du skal bare være opmærksom på, at du ikke må lave inserts i andre tabeller med identity-felter efter insert af den ID-værdi, du skal have fat i. Hvis du har brug for det, er du nødt til at samle værdien op i en variabel og til slut returnere denne:
declare @MinID int insert into min_tabel ... select @MinID = scope_identity()
hmm, men det duer vel, hvis jeg nedlægger min connection efter min insert og opretter en ny næste gang jeg skal lave noget på databasen ?? Jeg forventer at scope_identity() er connection afhængig
scope bliver vel styret af min sql connection.....
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.