1

次のトリガーを実行します。

ALTER TRIGGER [dbo].[TestTrigger] ON [dbo].[TestTable] 
after update as
    Declare @Name As varchar(30)
    update TestTable set [Name] = 'Rob Stanfield'
    select @Name = [Name] from inserted
    print @Name
GO

私が実行している挿入ステートメントは次のとおりです。

INSERT INTO TestTable (name) VALUES ('Ed Watkins')

出力は次のとおりです。

(1 row(s) affected)
Ed Watkins
(1 row(s) affected)

出力は次のようになると思います。

(1 row(s) affected)
Rob Stanfield

(1 row(s) affected)

私は何が欠けていますか?

4

1 に答える 1

3

InsertedTestTableトリガーが実行される前に変更された行のコピーになるため、名前の値は Ed Watkins のままです。

なぜこれをやろうとしているのかはわかりませんが、更新したばかりのテーブルにクエリを実行して、トリガーで更新したばかりの新しい値を取得する必要があります。

ALTER TRIGGER [dbo].[TestTrigger] ON [dbo].[TestTable] 
after update as
    Declare @Name As varchar(30)
    update TestTable set [Name] = 'Rob Stanfield'
    select @Name = [Name] from TestTable 
    print @Name
GO

あなたは本当にinstead of insertトリガーを探していましたか?

于 2012-10-03T13:39:57.697 に答える