必填字段mysql

时间:2011-06-21 08:27:38

标签: mysql sql

如何确保该字段是必填字段?这就是我的意思

我有以下mysql表结构:

CREATE TABLE `new` (
  `id` int(11) DEFAULT NULL,
  `name` int(11) DEFAULT NULL,
  `phone` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

以下是没有电话数据的查询

insert into new values(1, 'm', '');

但查询运行正常。如果没有电话字段的数据,应该怎么做才能让mysql返回错误?我可以通过php进行验证,但我很好奇如何在mysql中做到这一点。

4 个答案:

答案 0 :(得分:0)

INSERT INTO new VALUES(1,'m',NULL)

会导致错误 如果要检查电话号码字段是否为空白字符串,请执行 你可以在MySQL中使用触发器。

答案 1 :(得分:0)

我没有测试过这个,但我感觉'' != null。如果你运行

会发生什么
insert into new(id, name) values (1, 'test');

我打赌你得到一个插入错误......

无论如何,我认为在PHP中进行验证可能比等到数据库更好...插入是昂贵的......

答案 2 :(得分:0)

可能将'phone'列的默认值设置为NULL会使其失败插入,因为如果你没有指定它,它将最终为null。

否则你将需要省略默认的电话栏,例如在php中你用空($ phone)? null:$ phone;或类似的东西。

答案 3 :(得分:0)

''因为第3个选项不会使phone的值为null。它只等于空白字符串即可。 如果要查看错误,请将''替换为NULL。