1

SQL Server 2005 トリガーに次のコードがあります。

CREATE TRIGGER [myTrigger] ON [myTable]
FOR UPDATE,DELETE
なので
始める

DECLARE @OperationType VARCHAR(6)
存在する場合 (挿入されたものから 1 つを選択)
始める
    SET @OperationType='アップデート'
終わり
そうしないと
始める
    SET @OperationType='削除'
終わり

私の質問: @OperationType が正しく設定されていない状況はありますか? EG: テーブル内のデータは一連の UPDATE/DELETE ステートメントによって変更されますが、トリガーはそれらのすべてによって 1 回起動されませんか?

トリガーが UPDATE または DELETE ステートメントによって起動されたかどうかを判断するより良い方法はありますか?

4

2 に答える 2

5

2 つの別個のトリガーを作成してみませんか?

CREATE TRIGGER [myUpdateTrigger] ON [myTable]
FOR UPDATE
AS
BEGIN

END

CREATE TRIGGER [myDeleteTrigger] ON [myTable]
FOR DELETE
AS
BEGIN

END
于 2008-12-09T16:00:54.303 に答える
4

簡単な答え: いいえ、トリガーが正しく検出されない状況はありません (変更された行がない場合を除く)。

トリガーはすべてのステートメントに対して 1 回起動されるため、これは不可能であり、正しく動作しますが、ポイントは、 と に対して異なるタスクを本当に実行したい場合はUPDATEDELETEいくつかのトリガーを使用することをお勧めします。

于 2008-12-09T16:02:46.080 に答える