sql >> Database >  >> RDS >> Sqlserver

Wat is het verschil tussen Scope_Identity(), Identity(), @@Identity en Ident_Current()?

  • De @@identity functie retourneert de laatste identiteit die in dezelfde sessie is gemaakt.
  • De scope_identity() functie retourneert de laatste identiteit die in dezelfde sessie en hetzelfde bereik is gemaakt.
  • De ident_current(name) retourneert de laatste identiteit die is gemaakt voor een specifieke tabel of weergave in een sessie.
  • De identity() functie wordt niet gebruikt om een ​​identiteit te krijgen, het wordt gebruikt om een ​​identiteit te creëren in een select...into vraag.

De sessie is de databaseverbinding. Het bereik is de huidige query of de huidige opgeslagen procedure.

Een situatie waarin de scope_identity() en de @@identity functies verschillen, is als je een trigger op tafel hebt. Als u een query hebt die een record invoegt, waardoor de trigger ergens een ander record invoegt, wordt de scope_identity() functie retourneert de identiteit die door de query is gemaakt, terwijl de @@identity functie retourneert de identiteit die door de trigger is gemaakt.

Dus normaal gesproken zou je de scope_identity() . gebruiken functie.



  1. Het voorkomen van een drop-table bij het doelschema in Oracle Streams

  2. foreach %dopar% + RPostgreSQL

  3. Kan het schema niet verwijderen, omdat het niet bestaat of omdat je geen toestemming hebt. - SQL Server / TSQL-zelfstudie, deel 29

  4. Selecteer alle maanden binnen een bepaalde periode, inclusief die met 0 waarden