2

次のようなデータベーステーブルを作成しました。

CREATE TABLE test(
  name VARCHAR(30) NOT NULL, 
  password VARCHAR(40) NOT NULL);

次に、このように追加しましたが、期待どおりに失敗しました。

INSERT INTO test(name, password) VALUES ('test', NULL);

しかし、これを試してみると、問題なく挿入されました。

INSERT INTO test(name) VALUES ('test');

別の方法でテーブルを作成しようとしましたが、作成されませんでした:

CREATE TABLE test(
 name VARCHAR(30) NOT NULL, 
 password VARCHAR(40) NOT NULL DEFAULT NULL );

それで、挿入時にエラーを作成する方法はありますか?

おそらく関連付けられています とにかくデータベースへのデータ入力を検証できるようにするために何か他のことをする必要があると思います.制約について何かを見たと思いますが、これらはmysqlでサポートされているとは思いませんか? では、null チェックと検証は、mysql でデータベースを実行できないのですか?

4

1 に答える 1

3

デフォルトでは、MySQL暗黙的NULLな値をゼロ (または文字列データ型の空の文字列) に置き換えます。

セッションまたはサーバーで厳密モードを有効にすることで、これを回避できます。

SET sql_mode='STRICT_ALL_TABLES'

または追加

sql_mode='STRICT_ALL_TABLES'

[mysqld]あなたの下にmy.cnf

于 2012-06-07T11:28:10.173 に答える