ホームページ >データベース >mysql チュートリアル >トリガーは MySQL での INSERT 操作を妨げることができますか?
トリガーにより 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 の失敗に対するより直接的な方法を提供している可能性があります。
投げるEXCEPTION
たとえば、Microsoft SQL Server には THROW EXCEPTION 構文が含まれています。これにより、トリガーが INSERT 操作を中止する例外を発生させることができます。
db2
db2 は、INSERT を終了できるユーザー定義の条件を通知する SIGNAL ステートメントをサポートします。
注: これらのテクニックはトリガーの能力を示していますが、 INSERT を失敗させるには、注意を払い、パフォーマンスへの影響を考慮することが重要です。
以上がトリガーは MySQL での INSERT 操作を妨げることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。