sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er forskellen mellem Scope_Identity(), Identity(), @@Identity og Ident_Current()?

  • @@identity funktion returnerer den sidst oprettede identitet i samme session.
  • scope_identity() funktion returnerer den sidst oprettede identitet i den samme session og det samme omfang.
  • ident_current(name) returnerer den sidst oprettede identitet for en specifik tabel eller visning i enhver session.
  • identity() Funktionen bruges ikke til at få en identitet, den bruges til at oprette en identitet i en select...into forespørgsel.

Sessionen er databaseforbindelsen. Omfanget er den aktuelle forespørgsel eller den aktuelle lagrede procedure.

En situation, hvor scope_identity() og @@identity funktioner er forskellige, hvis du har en trigger på bordet. Hvis du har en forespørgsel, der indsætter en post, hvilket får triggeren til at indsætte en anden post et eller andet sted, scope_identity() funktion vil returnere den identitet, der er oprettet af forespørgslen, mens @@identity funktion vil returnere den identitet, der er oprettet af triggeren.

Så normalt ville du bruge scope_identity() funktion.



  1. PL/SQL-program til at slette posterne fra tabellen

  2. Sådan fungerer ON CONFLICT i SQLite

  3. Hvordan tæller man dage undtagen søndage mellem to datoer i Postgres?

  4. Ingen funktion matcher det angivne navn og argumenttyper