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

@@IDENTITY, SCOPE_IDENTITY(), OUTPUT e altri metodi per recuperare l'ultima identità

Dipende da cosa stai cercando di fare...

@@IDENTITÀ

Restituisce l'ultimo valore IDENTITY prodotto su una connessione, indipendentemente dalla tabella che ha prodotto il valore e dall'ambito dell'istruzione che ha prodotto il valore.@@IDENTITY restituirà l'ultimo valore Identity immesso in una tabella nella sessione corrente. @@IDENTITY è limitato alla sessione corrente e non è limitato all'ambito corrente. Ad esempio, se hai un trigger su una tabella che provoca la creazione di un'identità in un'altra tabella, otterrai l'identità creata per ultima, anche se è stato il trigger a crearla.

SCOPE_IDENTITY()

Restituisce l'ultimo valore IDENTITY prodotto su una connessione e da un'istruzione nello stesso ambito, indipendentemente dalla tabella che ha prodotto il valore. SCOPE_IDENTITY() è simile a @@IDENTITY, ma limiterà anche il valore all'ambito corrente. In altre parole, restituirà l'ultimo valore di identità che hai creato in modo esplicito, anziché qualsiasi identità creata da un trigger o da una funzione definita dall'utente.

IDENT_CURRENT()

Restituisce l'ultimo valore IDENTITY prodotto in una tabella, indipendentemente dalla connessione e dall'ambito dell'istruzione che ha prodotto il valore. IDENT_CURRENT è limitato a una tabella specificata, ma non dalla connessione o dall'ambito.