【发布时间】:2011-12-28 05:02:16
【问题描述】:
这是 MySQL 5.3.X+ db 中的一个表:
CREATE TABLE members` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`memberid` VARCHAR( 30 ) NOT NULL ,
`Time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`firstname` VARCHAR( 50 ) NULL ,
`lastname` VARCHAR( 50 ) NULL ,
UNIQUE (memberid),
PRIMARY KEY (id)
) ENGINE = MYISAM;
Id 列从不在查询中使用,它只是为了视觉方便(因此很容易看到表是如何增长的)。 Memberid 是一个实际的键,是唯一的,memberid 用于在查询中识别任何成员(WHERE memberid='abcde')。
我的问题是:如何保持 auto_increment,但将 memberid 作为主键?那可能吗? 当我尝试使用 PRIMARY KEY (memberid) 创建此表时,出现错误:
1075 - 表定义不正确;只能有一个自动列,并且必须定义为一个键
如果性能非常重要(尽管磁盘空间不是),最好的选择是什么(希望有一种方法可以保持 id 列,以便性能良好,并且查询通过 memberid 而不是 id 来识别任何用户) ?
【问题讨论】:
标签: mysql primary-key auto-increment mysql-error-1075