Hej jeg skal lige høre om i kan forklare hvad forskellen er på
@@IDENTITY, SCOPE_IDENTITY, og IDENT_CURRENT, for jeg ved ikke hvilken en jeg skal bruge.
Jeg vil også gerne vide hvordan man får evt det første eller sidste insert id ved en bulk insert ( og gerne hvordan man laver bulk inserten i første omgang :)
@@IDENTITY giver sidste auto increment id for connection
SCOPE_IDENTITY() giver sidste auto increment id for connection i current scope
forskellen er at hvis du laver en INSERT som laver en auto increment id og den table har en insert trigger som laver en ny INSERT som igen laver en auto increment id, så vil @@IDENTITY returnere den sidste, mens SCOPE_IDENTITY() vil returnere den du ønsker (fordi det er den sidste i current scope - trigger er et nyt scope)
Derfor brug altid SCOPE_IDENTITY() medmindre du kører på en gammel version af SQLServer hvor der kun er @@IDENTITY
Nåh , så er det ikke det jeg leder efter. Jeg skal indsætte flere rows i en tabel og bagefter skal jeg kunne trække Identity id'erne ud på dem. I MySql kan man gøre sådan her "insert into <table> values ('A'),('B'),('C');"SELECT LAST_INSERT_ID()" , hvor man så får id'et på den første insert, og så kan man bare selv lægge tal til, for man er sikker på at den er eksekveret i den rækkefølge.
Kan man ikke gøre noget lignende i MS SQL ? eller er man nødt til at indsætte hver row og udtrække SCOPE_IDENTITY() for hver ... altså:
"insert into <table> values ("a"); select SCOPE_IDENTITY()", "insert into <table> values ("b"); select SCOPE_IDENTITY()", "insert into <table> values ("c"); select SCOPE_IDENTITY()".
Du skulle vel ikke være den jeppe der gik på datamatiker uddannelsen i århus
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.