これから
MySQLトリガー:アトリガーを使用してINSERT、UPDATE、またはDELETEをどのように中止しますか? EfNetの#mysql誰かが尋ねた:
ビジネスルールが失敗した場合にトリガーで操作を中止するにはどうすればよいですか?
MySQL 5.0および5.1では、アトリガーを失敗させて意味のあるエラーメッセージを配信するために、いくつかのトリックに頼る必要があります。 MySQL StoredProcedure FAQには、エラー処理について次のように記載されています:
SP 11. SPには、「アプリケーションエラーを発生させる」ための「発生」ステートメントがありますか?申し訳ありませんが、現時点ではありません。 SQL標準のSIGNALおよびRESIGNALステートメントはTODOにあります。
おそらく、MySQL 5.2には、MySQLStoredProcedureProgrammingから直接盗まれたこのハックを廃止するSIGNALstatementが含まれるでしょう。ハックとは何ですか?存在しない列の使用を強制的にMySQLに試みます。ぶさいくな?はい。それは機能しますか?わかりました。
CREATE TRIGGER mytabletriggerexample 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;