
a INT NOT NULL,
b INT NULL,
c INT NOT NULL,
d INT NOT NULL,
UNIQUE KEY(b),
UNIQUE KEY(c),
UNIQUE KEY(d)
)ENGINE=INNODB,CHARSET=utf8;
从建表上看,可以看到
b
、
c
、
d
列都有唯一索引,但
b
可以为
NUll
,故不可以充当主键,而
第一个非空唯一索引是
c
列,所以
c
将会充当主键。
//
插入几条数据
INSERT INTO z SELECT 1,2,3,4;
INSERT INTO z SELECT 1,3,4,5;
INSERT INTO z SELECT 1,4,5,6;
INSERT INTO z SELECT 1,5,6,7;
//
查询情况,
_rowid
可以判断主键是哪一列
SELECT a,b,c,d,_rowid FROM z;
结果如下所示
可以看到
**_rowid**
跟
c
列一模一样,所以可以确定
c
列成为了主键
但是
**_rowid**
只可以看单个列作为主键的情况,如果使用多个列作为主键是查询不了的
相关文档
评论