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

@@IDENTITY, SCOPE_IDENTITY(), OUTPUT e outros métodos de recuperação da última identidade


Depende do que você está tentando fazer...

@@IDENTIDADE

Retorna o último valor de IDENTITY produzido em uma conexão, independentemente da tabela que produziu o valor e independentemente do escopo da instrução que produziu o valor.@@IDENTITY retornará o último valor de identidade inserido em uma tabela em sua sessão atual. @@IDENTITY está limitado à sessão atual e não está limitado ao escopo atual. Por exemplo, se você tiver um gatilho em uma tabela que faz com que uma identidade seja criada em outra tabela, você obterá a identidade que foi criada por último, mesmo que tenha sido o gatilho que a criou.

SCOPE_IDENTITY()

Retorna o último valor IDENTITY produzido em uma conexão e por uma instrução no mesmo escopo, independentemente da tabela que produziu o valor. SCOPE_IDENTITY() é semelhante a @@IDENTITY, mas também limitará o valor ao seu escopo atual. Em outras palavras, ele retornará o último valor de identidade que você criou explicitamente, em vez de qualquer identidade criada por um gatilho ou uma função definida pelo usuário.

IDENT_CURRENT()

Retorna o último valor IDENTITY produzido em uma tabela, independentemente da conexão e escopo da instrução que produziu o valor. IDENT_CURRENT é limitado a uma tabela especificada, mas não por conexão ou escopo.