テーブルの更新後にトリガーがあり、1回のトランザクションで2回の更新があります。最初の更新後にトリガーが呼び出されました。私は、トリガ、ビューの更新は、全体のトランザクションの後、期待していますが、それはまったく真実ではありません:SQL Server:トランザクション後のトリガー
マイ取引:
- 更新テーブル
- コール・トリガ、トリガが 1つの
- 更新テーブルからのみの更新を参照してください
- 3の更新条件が一致しないため、呼び出しトリガーがありません
トリガーを設定してトリガーseトランザクション後のデータ(1から3まで)
マイトリガー:
ALTER TRIGGER "dbo"."TRIGGER"
ON TABLE
FOR UPDATE
AS
IF (SELECT COUNT(*) FROM inserted i, deleted d
WHERE d.aaa IS NULL
AND i.aaa IS NOT NULL
AND i.bbb IN ('0', '1', '6', '9')) > 0
BEGIN
INSERT INTO export (aaa, ccc)
(SELECT aaa, ccc FROM inserted)
END
初期データ:insert into TABLE(aaa,bbb,ccc) values(123,'N',100)
更新:
update TABLE set bbb = '0' where aaa = 123
update TABLE set ccc = 1 where aaa = 123
期待:insert into export(123,1)
しかし、それは呼び出します。insert into export(123,100)
SQL Serverのトリガは 'set-based'であることに注意してください。したがって、一度に全体のセット(更新)でそのアクションを実行します。トリガーからコードを共有し、このセットベースのアプローチを正しく処理するかどうか確認できますか? – NickyvV
あなたの質問はクリアではありません.iあなたは質問していると仮定します。「あなたは1つのトランザクションで2つの更新を持っていますが、トリガーを同じテーブルのみで2回更新するようにしますか? – TheGameiswar
(3)がテーブルにそれ以上の変更を行わない場合、(2)のトリガで観察されたテーブルは(4)と同じです。私は問題が何であるか理解していない。 –