トリガーにより INSERT が失敗する可能性がありますか?
MySQL では、BEFORE INSERT などのトリガーにより、テーブルへの挿入前にデータを変更できます。ただし、検証エラーによる INSERT 操作の成功を阻止できるかどうかは、すぐにはわかりません。
MySQL のトリック
ただし、ブログ投稿では、この制限を回避します。たとえば、MySQL 5.0 または 5.1 トリガーは、存在しないカラムへのアクセスを強制的に試行し、エラーをトリガーして INSERT 操作を中止する可能性があります。
トリガーの例
このトリックを使用するトリガーの例は次のとおりです:
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;
その他の RDBMS
MySQL のソリューションには回避策が含まれていますが、他の RDBMS は INSERT の失敗に対するより直接的な方法を提供している可能性があります。
THROW EXCEPTION
たとえば、Microsoft SQL Server には THROW EXCEPTION 構文が含まれています。これにより、トリガーが INSERT 操作を中止する例外を発生させることができます。
db2
db2 は、INSERT を終了できるユーザー定義の条件を通知する SIGNAL ステートメントをサポートします。
注: これらの手法は、INSERT を失敗させるトリガーの能力を示していますが、注意してパフォーマンスへの影響を考慮することが重要です。
以上がトリガーは MySQL での INSERT 操作を妨げることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。