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

Qual è la differenza tra Scope_Identity(), Identity(), @@Identity e Ident_Current()?

  • Il @@identity la funzione restituisce l'ultima identità creata nella stessa sessione.
  • Il scope_identity() la funzione restituisce l'ultima identità creata nella stessa sessione e lo stesso ambito.
  • Il ident_current(name) restituisce l'ultima identità creata per una tabella o vista specifica in qualsiasi sessione.
  • L'identity() la funzione non viene utilizzata per ottenere un'identità, viene utilizzata per creare un'identità in un select...into interrogazione.

La sessione è la connessione al database. L'ambito è la query corrente o la stored procedure corrente.

Una situazione in cui scope_identity() e il @@identity le funzioni differiscono, se hai un trigger sul tavolo. Se hai una query che inserisce un record, facendo sì che il trigger inserisca un altro record da qualche parte, scope_identity() funzione restituirà l'identità creata dalla query, mentre il @@identity funzione restituirà l'identità creata dal trigger.

Quindi, normalmente useresti scope_identity() funzione.