我有兩個相同的表,除了一個具有標識列而另一個沒有。相反,第二個表使用第一個表中的標識列的值。當我將一條記錄插入到第一個表中時,我想我會插入第二個表作爲觸發器。我似乎無法得到正確的語法。如何檢索插入觸發器中的標識列值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子句,這樣你就可以捕獲所有新插入的標識值。 –