3

特定のエントリが更新されたときに、テーブル内のエントリの列を自動的に更新するトリガーを作成しようとしています。

テーブル名は「アカウント」です。列名は「変更済み」です (このエントリが最後に更新された日時を示す dateTime です)。

更新したいエントリを指すために SCOPE_IDENTITY() を使用しています。

トリガーは正常に作成されましたが、エントリを更新しても「変更済み」列が変更されません。おそらく私は SCOPE_IDENTITY() を間違って使用していますか? これが私のコードです:

CREATE TRIGGER trg_UpdateModified
ON dbo.accounts
AFTER UPDATE
AS
    UPDATE dbo.accounts
    SET modified = GETDATE()
    WHERE sysID = SCOPE_IDENTITY()

ありがとう!!

4

1 に答える 1

9

inserted次の表を使用して、更新されたばかりの行を確認します。

CREATE TRIGGER trg_UpdateModified
ON dbo.accounts
AFTER UPDATE
AS
    IF UPDATE(modified) RETURN; --Don't react recursively
    UPDATE dbo.accounts
    SET modified = GETDATE()
    WHERE sysID in (select sysID from inserted)
于 2013-09-16T14:29:55.140 に答える