0

我有一个简单的触发器设置,用于在表中插入记录RentJournal时将记录插入UnitAGA表中。

RentJournal表有一个名为 的主键 ID 列RentJournalID,它是自动递增的。该UnitAGA表还有一个名为 的可空外键列RentJournalID,它将每个UnitAGA条目链接到表中对应的条目RentJournal(通过下面的触发器插入)。

问题是当前此触发器仅将值插入RentJournal表中。但是现在我还想RentJournal通过这个触发器获取为每个条目分配的 ID,并将其写入相应的UnitAGA记录中,其插入实际上首先触发了触发器。我该怎么做呢 ?

截至目前的触发代码是这样的:

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
4

1 回答 1

0

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

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

然后用于@@IDENTITY获取RentJournal表中标识列的值。

因此,您应该能够执行以下操作:

update INSERTED set RentJournalID = @@IDENTITY
于 2013-10-21T10:29:56.583 回答