触发器中的IDENTITY_INSERT

时间:2010-01-15 16:36:42

标签: sql sql-server-2005

是否可以在表触发器中打开它?

我尝试使用创建触发器 SET IDENTITY_INSERT tableName ON

但是当我打开触发器定义时,我发现声明不存在......

这是我的更改触发器以添加IDENTITY_INSERT的查询,当我打开定义时,IDENTITY_INSERT被删除...

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET IDENTITY_INSERT dbo.MyTable ON
GO

ALTER TRIGGER [dbo].[MyTrigger]
ON [dbo].[MyTable]
AFTER INSERT AS



INSERT INTO MyOtherTable
(   
    // values
)


SET IDENTITY_INSERT dbo.MyTable OFF

1 个答案:

答案 0 :(得分:2)

要在触发器中打开和关闭它,您的SET IDENTITY_INSERT ON需要在此处:

插入后

设置IDENTITY_INSERT dbo.MyTable ON

INSERT INTO MyOtherTable

而不是在触发定义开始之前。在其当前位置,它仅在创建触发器时,而不是在实际使用时。