MySQL トリガー: INSERT 失敗の防止
MySQL トリガーでは挿入や更新の前にデータを変更できますが、一般的に完全には変更できないと想定されています。これらの操作が成功するのを妨げます。ただし、この機能を実現するための特定の手法が存在します。
失敗を引き起こすデータの操作
質問で示唆されているように、1 つのアプローチは、次のような方法でデータを変更することです。主キーの重複をトリガーします。ただし、この回避策はコンテキスト固有であり、普遍的に適用できるわけではありません。
エラー処理のための MySQL ハック
バージョン 5.2 より前の MySQL には、明示的な「例外の発生」がありませんでした。声明。失敗をシミュレートするには、巧妙なハックを使用できます。トリガー内に存在しないカラムにアクセスしようとすると、MySQL はエラーを発生させ、操作を中止します。このアプローチは、洗練されたものではありませんが、効果的に挿入の成功を妨げます。
トリガーの例
次のトリガーは、エラー処理ハックを示しています。
CREATE TRIGGER example_trigger BEFORE INSERT FOR EACH ROW BEGIN IF (NEW.important_value) < (fancy * dancy * calculation) THEN DECLARE dummy INT; SELECT 'Your meaningful error message goes here' INTO dummy FROM mytable WHERE mytable.id = NEW.id; END IF; END;
存在しないカラム (ダミー) から選択しようとすると、トリガーは MySQL に強制的にエラーをスローさせ、特定の条件が満たされた場合に INSERT 操作を中止します。
以上がMySQL トリガーを使用して INSERT 操作の成功を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。