Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual é a diferença entre Scope_Identity(), Identity(), @@Identity e Ident_Current()?

  • A @@identity A função retorna a última identidade criada na mesma sessão.
  • O scope_identity() A função retorna a última identidade criada na mesma sessão e no mesmo escopo.
  • O ident_current(name) retorna a última identidade criada para uma tabela ou visualização específica em qualquer sessão.
  • A identity() função não é usada para obter uma identidade, ela é usada para criar uma identidade em um select...into consulta.

A sessão é a conexão com o banco de dados. O escopo é a consulta atual ou o procedimento armazenado atual.

Uma situação em que o scope_identity() e a @@identity funções diferem, é se você tiver um gatilho na mesa. Se você tiver uma consulta que insere um registro, fazendo com que o gatilho insira outro registro em algum lugar, o scope_identity() A função retornará a identidade criada pela consulta, enquanto a função @@identity A função retornará a identidade criada pelo gatilho.

Então, normalmente você usaria o scope_identity() função.