SCOPE_IDENTITY对批量插入的值

时间:2014-11-28 14:25:55

标签: sql sql-server sql-server-2008

我有表MyTable,我在该表上有一个After trigger(On Insert)

当我在MyTable上运行批量插入语句时,它会触发捕获插入数据的触发器(即用于审计日志目的)。

我们截断了表MyTable,现在在表格中插入5条记录。此外,Auditlog表具有现有数据。假设审计日志表中已有500条记录。

我的问题是,当表上有触发器时,SCOPE_IDENTITY()语句在BULK INSERT语句的情况下会返回什么?

--Create table 
Create table MyTable 
(
    FirstCol int identity(1,1) primary key,
    SecondCol varchar(10)
)

Create table AuditLog
(
    AID int identity(1,1) primary key,
    Comments varchar(50)
)

--Insert data to MyTable
INSERT INTO MyTable (SecondCol)
VALUES ('First'), ('Second'), ('Third'), ('Fourth'), ('Fifth')

Select * from MyTable
Select Scope_identity()  

1 个答案:

答案 0 :(得分:6)

scope_identity返回同一范围内最后创建的ID。触发器在一个单独的作用域中运行,因此该函数将返回与触发器不存在时相同的内容。