ホームページ >データベース >mysql チュートリアル >アプリケーション側のチェックを行わずに MySQL テーブルへの空の文字列の挿入を防ぐにはどうすればよいですか?

アプリケーション側のチェックを行わずに MySQL テーブルへの空の文字列の挿入を防ぐにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-22 07:32:131027ブラウズ

How Can I Prevent Empty String Insertion into MySQL Tables Without Application-Side Checks?

制約による 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。