我目前正在尝试使用CodeIgniter的对象关系映射器,我遇到了一些我没想到的事情。MySQL插入与缺少不空字段的查询
我有一个表有几个字段,其中一些不是NULL。插入查询缺少NOT NULL字段的生成 - 添加了一个新行,但这些字段为空白。
我不知道MySQL会忽略查询中不存在的NOT NULL字段并反正插入该行。有没有办法限制这个?
- 编辑 -
让我补充一些细节,并试图解释这一点更
下面是一个示例表:
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`color` varchar(40) COLLATE utf8_bin DEFAULT '',
`shape` varchar(40) COLLATE utf8_bin NOT NULL,
`size` varchar(40) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
下面是一个简单的查询:
INSERT INTO `test` (`shape`) VALUES ('foo')
我没有size
在我的查询中,它仍然增加了行 - 这是预期的吗?
(示例查询是在phpMyAdmin运行)
请编辑您的问题,包括从'SHOW CREATE TABLE输出(table_name)' – 2011-06-09 00:19:08
是NULL写入还是空字符串?一个空字符串将通过NOT NULL约束。 – Thomas 2011-06-09 00:22:14
“NOT NULL”确保存储的值永远不会是NULL,但字符串“NULL”不是同一个东西。 'NULL'只是一个占位符,表示缺少任何值... – 2011-06-09 00:36:52