IDENTITY
Esta é uma dúvida comum entre desenvolvedores
Em muitas situações, você deseja saber o código que acabou de inserir.
Para isso precisamos saber o IDENTITY, mas qual deles? Existem 3 opções.
SCOPE_IDENTITY() - Retorna o último ID inserido dentro daquele escopo(Procedure, Função, etc).
IDENT_CURRENT('nomedatabela') - Retorna o último ID inserido em uma determinada tabela, independente de conexão, escopo, etc.
Muito Cuidado com esta, pois você pode pegar o ID de outro insert.
@@IDENTITY - Retorna o último ID inserido na conexão atual, independente de tabela.
Evite usar este, a chance de ter problema é enorme.
CRIAÇÃO DO AMBIENTE:
CREATE TABLE Registro
INSERT INTO Registro(Nome) values('Teste1'),('Teste2')
CREATE TRIGGER tg_Cliente ON Cliente
Verifique o cenário atual:

INSERT INTO Cliente(Nome) VALUES ('José')
--O último registro inserido foi 1, então ele deve retornar o Código 2
INSERT INTO Cliente(Nome) VALUES ('João')
--O último registro inserido foi 2, então ele deveria retornar o Código 3, porém ele pega o Código 5(da tabela Registro), que foi inserido pela trigger, pois está na mesma conexão.
INSERT INTO Cliente(Nome) VALUES ('Manuel')

Muito cuidado ao utilizar estes comandos, analisem bem a situação.
Related articles
How to call a function inside my SQL Server?
Database function function and function
How to create an SQL to do multiple inserts in one statement?
Practical examples
Short: SQL Update using begin try and begin transaction
Commit and Rollback command
Getting the last 120 months of data from my database
how to do it in SQL language?
How to create a variable to use the IN clause SELECT query SQL?
Database code part
SQL Update using Try Catch
Na prática com exemplo real
Comando SQL Update usando Try Catch
Na prática e no database
SELECT Format Date Time for many countries
It is a good tip to use day by day
Creating a SiteMap using SQL Database
Como indexar melhor meu site e links?
Transformando linhas em colunas usando SQL Server
veja como funciona
Ozimar Henrique