ホームページ >データベース >mysql チュートリアル >MySQL トリガーの例を示した説明: データベース アクションの自動化
MySQL トリガー は、テーブル上の特定のイベント (INSERT、UPDATE など) に応答してデータベース内で指定されたアクションを自動的に実行できる強力な機能です。 、または 削除。トリガーは、アプリケーション コードでこれらのアクションを明示的に管理する必要がなく、ビジネス ルールの適用、データの整合性の維持、または変更のログ記録に役立ちます。
このガイドでは、トリガーとは何か、どのように機能するのかを説明し、MySQL でのトリガーの使用法を理解するのに役立つ実践的な例を提供します。
トリガーは、テーブルで特定のイベントが発生したときに MySQL によって自動的に実行される (または「トリガー」される) SQL ステートメントのセットです。イベントは次のいずれかになります:
トリガーはイベントの BEFORE または AFTER のいずれかで実行されるように定義できるため、データの処理方法を柔軟に行うことができます。
MySQL でトリガーを作成するための一般的な構文は次のとおりです。
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW trigger_body;
BEFORE Trigger: トリガー アクションは、トリガー イベントの前 (挿入、更新、または削除操作の前など) に実行されます。これにより、テーブルにコミットされる前にデータを変更できます。
AFTER Trigger: トリガー アクションはイベント後 (レコードの挿入、更新、削除後など) に実行されます。これは、ログ記録など、データに加えられた変更に基づいてアクションを実行する場合に便利です。
created_at 列を含む従業員情報を含むemployeesというテーブルがあるとします。 AFTER INSERT トリガーを作成して、新しいレコードが挿入されたときに created_at フィールドを現在のタイムスタンプに自動的に設定できます。
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW trigger_body;
この例では:
CREATE TRIGGER set_created_at AFTER INSERT ON employees FOR EACH ROW BEGIN UPDATE employees SET created_at = NOW() WHERE id = NEW.id; END;この例では:
CREATE TRIGGER update_discounted_price AFTER UPDATE ON products FOR EACH ROW BEGIN IF NEW.price <> OLD.price THEN UPDATE products SET discounted_price = NEW.price * (1 - NEW.discount / 100) WHERE id = NEW.id; END IF; END;この例では:
CREATE TRIGGER prevent_delete_critical_employee BEFORE DELETE ON employees FOR EACH ROW BEGIN IF OLD.is_critical = 1 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot delete critical employee'; END IF; END;この例では:
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW trigger_body;
CREATE TRIGGER set_created_at AFTER INSERT ON employees FOR EACH ROW BEGIN UPDATE employees SET created_at = NOW() WHERE id = NEW.id; END;
パフォーマンスへの影響: トリガーは追加の SQL ステートメントを実行するため、データベース操作にオーバーヘッドが追加されます。特に大規模なテーブルや頻繁な操作の場合、トリガー ロジックがどれほど複雑であるかに注意してください。
トリガーのネスト: 同じテーブルを変更するトリガーには注意してください。無限ループや過度のリソース使用につながる可能性があります。 MySQL では、トリガーがそれ自体を直接呼び出すこと (再帰トリガー) を許可していません。
データ整合性: トリガーは、不要な削除の防止など、データの整合性を確保するのに役立ちますが、デバッグが難しい場合があります。トリガー ロジックが適切に文書化されていることを常に確認してください。
トリガーのテスト: トリガーを運用環境にデプロイする前に、常に開発環境またはステージング環境で徹底的にテストしてください。意図しない副作用がアプリケーションのパフォーマンスやビジネス ロジックに影響を与える可能性があります。
MySQL トリガーは、挿入、更新、削除など、データベースの変更に応じたアクションを自動化する強力な機能です。トリガーを使用すると、ビジネス ルールを適用し、データの整合性を維持し、監査やログなどのタスクを自動化できます。ただし、システムのパフォーマンスへの悪影響を避けるために、パフォーマンスへの影響を慎重に検討し、トリガーが慎重に実装されていることを確認することが重要です。
以上がMySQL トリガーの例を示した説明: データベース アクションの自動化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。