数据库中的必填字段

时间:2012-06-07 11:25:29

标签: mysql

我创建了一个这样的数据库表:

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中受支持?那么我可以用mysql做数据库的空检查和验证吗?

1 个答案:

答案 0 :(得分:3)

默认情况下,MySQL用零替换隐式NULL值(或字符串数​​据类型为空字符串)。

您可以通过为会话或服务器启用严格模式来解决此问题:

SET sql_mode='STRICT_ALL_TABLES'

或添加

sql_mode='STRICT_ALL_TABLES'

[mysqld]下的my.cnf