我有两个相同的表,除了一个具有标识列而另一个没有。相反,第二个表使用第一个表中的标识列的值。当我将一条记录插入到第一个表中时,我想我会插入第二个表作为触发器。我似乎无法得到正确的语法。如何检索插入触发器中的标识列值SQL Server
从标识列@EDVisitId返回空值。
ALTER TRIGGER [dbo].[trgInserterrEDVisitOriginal] ON [dbo].[errEDVisit]
AFTER INSERT
AS
--Name: Bob Avallone
--Date: 6-15-2017
--
-- The purpose of this trigger is to insert a record into errEDVisitOriginal
-- whenever a new errEDVisit is inserted.
--XXXXXXXXXX
declare @EDVisitId int
declare @SubmissionControlID INT
Select @EDVisitId = EDVisitID from inserted
SELECT @SubmissionControlID = SubmissionControlID from Inserted
Begin
Insert Into errEDVisitOriginal (EDVisitId, SubmissionControlID)
VALUES (@EDVisitId, @SubmissionControlID)
End
你的触发器有一个主要的缺陷!它假定只有一行插入。每次操作时,sql server中的触发器都会触发一次。因为这种触发器需要基于设置而不是基于标量的。 –
而不是在触发器中这样做,你应该有一个插入程序。在那个过程中,你会想要使用OUTPUT子句,这样你就可以捕获所有新插入的标识值。 –