1. ホーム
  2. sql

[解決済み] SQL Action キーワード

2022-02-14 14:28:40

質問

SQL Action キーワードは何をするのですか? このキーワードをトリガで使用し、トリガが Insert、Delete、または Update によって呼び出されたかどうかを判断することは可能ですか?

どのように解決するのですか?

ACTIONは、ODBC関数呼び出しで使用するために予約されています。 これらの語は最小限のSQL文法を制約するものではありません。しかし、コアSQL文法をサポートするドライバとの互換性を確保するために、アプリケーションはこれらのキーワードの使用を避けるべきです。

特定のステップにトリガを作成するには、トリガ作成時にどのステップを指定すればよいのです。以下の例のように3つ全てを指定する必要はなく、ターゲットに応じて3つの選択肢を自由に組み合わせて指定することができます。

CREATE TRIGGER TriggerName
ON TableName
  [FOR|AFTER|INSTEAD OF]
  AFTER,UPDATE,DELETE
AS
 ...

もし、これらのうちどれがトリガーを呼び出したのかを判断する必要がある場合は、以下のように挿入されたテーブルと削除されたテーブルを確認する必要があります。

IF EXISTS (SELECT TOP 1 * FROM Inserted) AND NOT EXISTS (SELECT TOP 1 * FROM Deleted) --INSERT
  ...

IF EXISTS (SELECT TOP 1 * FROM Inserted) AND EXISTS (SELECT TOP 1 * FROM Deleted) --UPDATE
  ...

IF NOT EXISTS (SELECT TOP 1 * FROM Inserted) AND EXISTS (SELECT TOP 1 * FROM Deleted) --DELETE
  ...