ホームページ >データベース >mysql チュートリアル >UPDATE 後に実際にデータが変更された場合にのみ MySQL トリガーを実行するにはどうすればよいですか?
MySQL UPDATE トリガー: データが変更された場合にのみ実行されます
MySQL トリガーを使用すると、特定のデータベース イベント (テーブル更新など) が発生したときにアクションを自動的に実行できます。ただし、更新された行のデータが実際に変更された場合にのみ実行するトリガーが必要な場合もあります。
質問:
組み込みの「AFTER UPDATE」トリガーは、データを変更する更新とデータを変更しない更新を区別しません。これにより、特に多くの列を含むテーブルを処理する場合、不必要なトリガーの実行が発生する可能性があります。
解決策:
トリガー内のすべての列への変更を直接比較することはできませんが、タイムスタンプを使用する回避策があります。行が変更されるたびに、MySQL は行のタイムスタンプ列を自動的に更新します。したがって、このタイムスタンプを使用して、データが変更されたかどうかを判断できます。
実装:
これは例です:
<code class="language-sql">CREATE TRIGGER ins_sum AFTER UPDATE ON foo FOR EACH ROW BEGIN IF NEW.ts != OLD.ts THEN INSERT INTO bar (a, b) VALUES(NEW.a, NEW.b); END IF; END;</code>
利点:
注:
このソリューションは、MySQL の自動タイムスタンプ更新動作に依存しています。アプリケーションがタイムスタンプを明示的に更新すると、期待どおりに動作しない可能性があります。
以上がUPDATE 後に実際にデータが変更された場合にのみ MySQL トリガーを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。