需求:
在mysql数据库中建立字段id自增长;
字段uniquekey不重复;
问题:
在navicat中设置id自增长,uniquekey为主键时报错:
Incorrect table definition;there can be only one auto column and it must be defined as a key
解决方法:
把id在索引中设置索引类型为任意一个类型,比如normal 或 unique,然后uniquekey就可以设置为主键了。
Notes
-
如需多个键唯一的话可以将uniquekey_2在索引中设置索引类型为unique。
-
联合主键:在navicat中同时选择了iduniquekey后面的主键是联合主键的操作,该操作只有在联合的各键都冲突的情况下才会报错。 故,考虑到id自增,id+uniquekey的组合永远不会冲突,所以就无法达到uniquekey 唯一的目的。
-
不建议把id设为主键,因为只有主键能作为外键被外部索引。
区别项 | primary key(主键) | unique(唯一键约束) |
---|---|---|
唯一性 | 可以 | 可以 |
是否可以为空 | 不可以 | 可以 |
允许个数 | 只能有1个 | 允许多个 |
是否允许多列组合 | 允许 | 允许 |