0

MS SQL で INSERT、UPDATE、および DELETE 用の単一のトリガーを作成したいのですが、3 つの IF ステートメントを使用せずにデータを簡単に抽出できるようにしたいと考えています。

私はこのようなことをしたい:

DECLARE @PK  int

SELECT @PK = COALESCE(i.PK, d.PK)
FROM inserted i, deleted d

これは機能しませんでしたが、1 つのクエリで実行できるかどうかを知りたいです。

いくつかの代替手段は何ですか?

4

2 に答える 2

1

ここにある切り替えロジックを実行できます:SQL Serverトリガー切り替え挿入、削除、更新

または、3つの異なるトリガーを作成できます。

それらはあなたの選択肢です。

于 2013-03-08T18:51:21.130 に答える
0

FULL OUTER JOINを使用することになりました

DECLARE @DataIWanted as varchar(255)

SELECT @DataIWanted = COALESCE(i.TheData,d.TheData)
FROM inserted i
   FULL OUTER JOIN deleted d on d.PK=i.PK

上記のクエリは、削除されたテーブルまたは挿入/更新されたテーブルからのものです。TheData が DB で NON NULL として定義されていることを前提としています。

于 2013-03-11T05:22:38.407 に答える