使用Trigger在另一个表中插入记录,并将ID写回原始记录..?

时间:2013-10-21 10:00:47

标签: sql sql-server triggers

我有一个简单的触发器设置,用于在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

1 个答案:

答案 0 :(得分:0)

查看插入触发器中可用的INSERT逻辑表:

  

DML触发器使用已删除和插入的逻辑(概念)表。它们在结构上类似于定义触发器的表,即尝试用户操作的表。已删除和已插入的表包含可由用户操作更改的行的旧值或新值。例如,要检索已删除表中的所有值,请使用:SELECT * FROM deleted    http://technet.microsoft.com/en-us/library/ms189799.aspx

然后使用@@IDENTITY获取RentJournal表格上的标识列的值。

所以你应该能够做到这样的事情:

update INSERTED set RentJournalID = @@IDENTITY