SQL トリガーは、データベース内で特定のイベントが発生したときに、定義されたアクションを自動的に実行できるデータベース管理システムの特別なオブジェクトです。トリガーを使用して、データの挿入、更新、削除などのさまざまなシナリオを処理できます。この記事では、SQLトリガーの書き方と具体的なコード例を紹介します。
SQL トリガーの基本的な構文は次のとおりです。
CREATE TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name [FOR EACH ROW] trigger_body
このうち、trigger_name
はトリガーの名前 (BEFORE
または #) です。 ##AFTERキーワードは、イベントの前または後にトリガーが実行されることを指定します。
INSERT、
UPDATE、
DELETEキーワードは、イベントに関連付けられたイベント タイプを指定します。トリガー、
table_name は、トリガーに関連付けられたテーブル名です。
FOR EACH ROW は、データの行ごとにトリガーが実行されることを指定します。
trigger_body は、トリガーが実行する必要があるアクションです。
シナリオ 1: データを挿入する前に作成時間を自動的に設定します。
users というテーブルがあり、
id、
name、
create_time という 3 つの列が含まれているとします。新しいユーザーを挿入する前に、
create_time を現在時刻に自動的に設定したいと考えています。
CREATE TRIGGER set_create_time BEFORE INSERT ON users FOR EACH ROW BEGIN SET NEW.create_time = NOW(); END;
シナリオ 2: データの更新後に変更時刻を自動的に更新します。
ユーザー情報を更新した後、update_time 列を最新の変更時刻に自動的に更新する必要があるとします。
CREATE TRIGGER set_update_time AFTER UPDATE ON users FOR EACH ROW BEGIN SET NEW.update_time = NOW(); END;
シナリオ 3: 削除されたデータを削除する前に、自動的にバックアップします。
場合によっては、データを削除する前に、削除するデータを別のテーブルに自動的にバックアップする必要がある場合があります。user_backup という名前のテーブルがあり、
users テーブルと同じ構造を持っているとします。削除するデータを
にバックアップしたいとします。ユーザーを削除する前に user_backup を実行してください。 テーブル。
CREATE TRIGGER backup_user BEFORE DELETE ON users FOR EACH ROW BEGIN INSERT INTO user_backup (id, name, create_time) VALUES (OLD.id, OLD.name, OLD.create_time); END;上記は、いくつかの一般的な SQL トリガーの例です。実際のアプリケーションでは、必要に応じて、より複雑なトリガーを作成できます。ただし、トリガーが多すぎる、または複雑すぎるとデータベースのパフォーマンスに一定の影響を与える可能性があるため、トリガーを設計する際には慎重な評価と考慮が必要であることに注意してください。
以上がSQLトリガーの書き方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。