我有一个简单的触发器设置,用于在RentJournal
表中插入记录时将记录插入UnitAGA
表。
RentJournal
表有一个名为RentJournalID
的主键ID列,它自动递增。 UnitAGA
表还有一个可为空的外键列RentJournalID
,它将每个UnitAGA
条目链接到RentJournal
表中的相应条目(通过下面的触发器插入) )。
问题是目前此触发器仅将值插入RentJournal
表。但现在我想通过此Trigger获取为每个RentJournal
条目分配的ID,并将其写入相应的UnitAGA
记录,其插入实际上首先触发了Trigger。我该怎么做?
现在的触发器代码是:
USE [RentDB]
GO
ALTER TRIGGER [RTS].[InsertRentJournalEntry]
ON [RTS].[UnitAGA]
AFTER INSERT
AS
BEGIN
INSERT INTO RTS.RentJournal
(UnitId, AdjustmentType, EffectiveDate, ReferenceFormNo)
SELECT
UnitId, 'AGA', EffectiveDate, ReferenceFormNo FROM inserted
END
答案 0 :(得分:0)
查看插入触发器中可用的INSERT
逻辑表:
DML触发器使用已删除和插入的逻辑(概念)表。它们在结构上类似于定义触发器的表,即尝试用户操作的表。已删除和已插入的表包含可由用户操作更改的行的旧值或新值。例如,要检索已删除表中的所有值,请使用:SELECT * FROM deleted http://technet.microsoft.com/en-us/library/ms189799.aspx
然后使用@@IDENTITY
获取RentJournal
表格上的标识列的值。
所以你应该能够做到这样的事情:
update INSERTED set RentJournalID = @@IDENTITY