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

Eu já vi vários métodos usados ao recuperar o valor de um campo de identidade de chave primária após a inserção.

declare @t table (
    id int identity primary key,
    somecol datetime default getdate()
)
insert into @t
default values

select SCOPE_IDENTITY() --returns 1
select @@IDENTITY --returns 1

Retornando uma tabela de identidades após a inserção:

Create Table #Testing (  
    id int identity,  
    somedate datetime default getdate()  
)  
insert into #Testing  
output inserted.*  
default values   

Que método é adequado ou melhor? O método OUTPUT é escopo seguro?

O segundo trecho de código foi emprestado deSQL em estado selvagem

questionAnswers(8)

yourAnswerToTheQuestion