制約を使用して MySQL への空の文字列の挿入を防止する
以前の議論で、MySQL への NULL 値の挿入を防止する方法が紹介されました。 。ただし、見落としにより、制約にもかかわらず空の文字列が挿入されてしまう可能性がありました。この記事では、データベース制約を使用してこの問題に対処し、データベース側とアプリケーション側の両方でデータの整合性を確保する方法を検討します。
次のテーブル定義を考えてみましょう。
CREATE TABLE IF NOT EXISTS tblFoo ( foo_id int(11) NOT NULL AUTO_INCREMENT, foo_test varchar(50) NOT NULL, PRIMARY KEY (foo_id) );
この定義は、 foo_test 列に NOT NULL 制約を設定しても、空の文字列の挿入は許可されます:
INSERT INTO tblFoo (foo_test) VALUES ('');
これを防ぐには、CHECK 制約を使用します。ただし、MySQL バージョン 8.0 より前では、このタイプの制約はサポートされていなかったことに注意することが重要です。 MySQL リファレンス マニュアルに記載されているように:
The CHECK clause is parsed but ignored by all storage engines.
古い MySQL バージョンの場合、回避策は、推奨されているトリガーを使用することです。ただし、将来の開発では、PostgreSQL などのデータ整合性のサポートが強化されたデータベースを検討することが有利になる可能性があります。
以上がMySQL テーブルへの空の文字列の挿入を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。