0
我创建一个表:MySQL的唯一聚集约束不约束预期
CREATE TABLE movies
(
id INT AUTO_INCREMENT PRIMARY KEY,
name CHAR(255) NOT NULL,
year INT NOT NULL,
inyear CHAR(10),
CONSTRAINT UNIQUE CLUSTERED (name, year, inyear)
);
(这是JDBC SQL)
与一个clustered
指数“指数样”创建MySQL表是 “独一无二”,且跨越三个集群列:
mysql screen http://img510.imageshack.us/img510/930/mysqlscreenshot.th.jpg
full size
但是,一旦我倾倒我的数据(没有抛出异常),我看到的唯一性约束失败:
SELECT * FROM movies
WHERE name = 'Flawless' AND year = 2007 AND inyear IS NULL;
给出:
id, name, year, inyear
162169, 'Flawless', 2007, NULL
162170, 'Flawless', 2007, NULL
有谁知道我在做什么错在这里?
您所选择的独特组合键索引名称“CLUSTERED”令人困惑。你知道聚集索引是什么吗?如果您使用的是innodb,那么您为表定义的每个主键都是聚簇索引。每个innodb表只能有一个聚簇索引作为聚簇索引,根据索引键值对数据行进行排序并存储在表中。因此,只能在每个表上创建一个聚簇索引,因为数据行本身只能按一个顺序排序。 http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html – 2010-03-26 07:33:42