sqlite3のSQLメソッド CREATE TRIGGER

SQLite3のCREATE TRIGGER文は、データベース内で特定のイベントが発生した際に自動的に実行されるトリガーを作成するために使用されます。トリガーは、データの変更、挿入、削除などのアクションに対して実行される一連のSQLステートメントを定義します。

CREATE TRIGGER文の基本的な構文は以下の通りです:

sql
CREATE TRIGGER trigger_name BEFORE|AFTER INSERT|UPDATE|DELETE ON table_name FOR EACH ROW BEGIN -- トリガーのアクション(SQLステートメント)をここに記述 END;

ここで、各要素の説明です:

  • CREATE TRIGGER: トリガーを作成するSQLステートメントのキーワード。
  • trigger_name: トリガーの名前を指定します。
  • BEFORE|AFTER: トリガーが実行されるタイミングを指定します。BEFOREは指定されたアクションが実行される前にトリガーが実行され、AFTERは指定されたアクションが実行された後にトリガーが実行されます。
  • INSERT|UPDATE|DELETE: トリガーが関連付けられるアクション(挿入、更新、削除)を指定します。
  • ON table_name: トリガーが適用されるテーブルを指定します。
  • FOR EACH ROW: トリガーが各行に対して実行されることを指定します。
  • BEGINEND: トリガーの本体であるSQLステートメントを挟むブロックです。この中にトリガーの具体的なアクションを記述します。

以下は具体的な例です。CREATE TRIGGER文を使用して、transactionsテーブルに新しい行が挿入された際に、合計金額を更新するトリガーを作成する場合のSQLクエリです:

sql
CREATE TRIGGER update_total AFTER INSERT ON transactions FOR EACH ROW BEGIN UPDATE accounts SET total = total + NEW.amount WHERE account_id = NEW.account_id; END;

この例では、update_totalという名前のトリガーが作成され、transactionsテーブルに新しい行が挿入された後に、accountsテーブルのtotal列が更新されます。トリガー内のSQLステートメントは、新しく挿入された行の情報にアクセスするためにNEWキーワードを使用しています。

CREATE TRIGGERを使用することで、データベース内のイベントに対する自動化された反応を設定できます。