0

RentJournalテーブルにレコードが挿入されるたびに、テーブルにレコードを挿入するために使用される単純なトリガー設定がありUnitAGAます。

RentJournalテーブルには という名前の主キー ID 列がありRentJournalID、これは自動インクリメントです。テーブルにはというUnitAGA名前の null 許容外部キー列もあり、各エントリをテーブル内の対応するエントリにRentJournalIDリンクします (以下のトリガーを介して挿入されます)。UnitAGARentJournal

RentJournal問題は、現在、このトリガーがテーブルに値を挿入するだけであることです。RentJournalしかし、ここでは、この Trigger を介して各エントリに割り当てられた 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
4

1 に答える 1

0

Have a look at the INSERT logical table that is available in insert triggers:

DML triggers use the deleted and inserted logical (conceptual) tables. They are structurally similar to the table on which the trigger is defined, that is, the table on which the user action is tried. The deleted and inserted tables hold the old values or new values of the rows that may be changed by the user action. For example, to retrieve all values in the deleted table, use: SELECT * FROM deleted http://technet.microsoft.com/en-us/library/ms189799.aspx

Then use @@IDENTITY to get the value of the identity column on your RentJournal table.

So you should be able to do something like:

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