我刚刚检查了一下,发现可以创建一个默认为 NULL 的列的表,虽然它同时是一个唯一键(UNIQUE KEY):
CREATE TABLE IF NOT EXISTS `u789` (
`column1` varchar(10) DEFAULT NULL,
UNIQUE KEY (column1)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我理解,这看起来很奇怪,没有太多意义。我期望第二个插入是
INSERT INTO u789 VALUE (NULL);
将会失败。
但是,它可以毫无问题地插入第一、第二和第三个空值。有谁能解释为什么如果表中已经有NULL,它还会插入第二和第三列呢?
这是一个理论性的问题(据我所知,在大多数情况下,没有人将DEFAULT NULL + UNIQUE KEY用于同一列),但我想了解为什么一旦该列中已经存在NULL,它就不会抛出错误。我在声明唯一列时做错了什么吗?
谢谢。