SELECT SCOPE_IDENTITY()
@H_
404_9@使用@@ IDENTITY可能会有意想不到的结果,所以要小心如何使用它.将记录插入其他表的触发器将导致@@ IDENTITY值发生变化,其中,SCOPE_IDENTITY()将仅从当前作用域提供最后一个身份.
@H_
404_9@以下是一个示例,它将
显示@@ IDENTITY和SCOPE_INSERT()之间的区别,以及如何返回不同的值.
use tempdb
go
create table table1
(ID int identity)
go
create table table2
(ID int identity(100,1))
go
create trigger temptrig
on table1
for insert
as
begin
insert table2
default values;
end
go
insert table1
default values;
select SCOPE_IDENTITY(),@@IDENTITY
@H_
404_9@没有人在这里讨论的另一个选择是使用
sql 2005中的OUTPUT子句.在这种情况下,您只需要将输入子句
添加到插入,然后从
代码中捕获该记录集.当插入多个记录而不是只有1个时,这很好
use tempdb
go
create table table1
(ID int identity)
go
insert table1
output inserted.ID
default values;
--OR...
insert table1
output inserted.$identity
default values;