ホームページ >データベース >mysql チュートリアル >アプリケーション側のチェックを行わずに MySQL テーブルへの空の文字列の挿入を防ぐにはどうすればよいですか?
制約による MySQL への空文字列の挿入の防止
このクエリでは、ユーザーはデータベース テーブルへの NULL 値の挿入を正常に防止しました。 。ただし、アプリケーション側のチェックだけに依存せずに、空の文字列の挿入を防止したいとも考えています。
データベース制約を使用してこれを実現するには、テーブル定義に CHECK 制約を追加します。
CREATE TABLE IF NOT EXISTS tblFoo ( foo_id int(11) NOT NULL AUTO_INCREMENT, foo_test VARCHAR(50) NOT NULL CHECK (foo_test <> ''), PRIMARY KEY (foo_id) );
この制約により、foo_test 列に空の文字列を含めることができなくなります。ただし、8.0 より前の MySQL バージョンでは、CHECK 制約は解析されますが、すべてのストレージ エンジンによって無視されることに注意することが重要です。したがって、空の文字列をテーブルに挿入することはできます。
回避策として、ユーザーはトリガーを使用して制約を強制することを検討できます。
CREATE TRIGGER trg_tblFoo_prevent_empty_string BEFORE INSERT ON tblFoo FOR EACH ROW BEGIN IF NEW.foo_test = '' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Empty string not allowed in foo_test column'; END IF; END;
このトリガーではエラーが発生し、 foo_test 列に空の文字列が挿入されないようにします。
以上がアプリケーション側のチェックを行わずに MySQL テーブルへの空の文字列の挿入を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。