如何在mysql表中创建第二个主键/复合键

时间:2014-05-02 16:07:38

标签: mysql database normalization

我有一个名为enrollments的表,如下所示:

enrollmentindex - which is table primary key
username - varchar(64)
shortname - varchar(64)
role - varcar(64)

我必须离开enrollmentindex col,但想要使用primary keyusernameshortname创建第二个role(复合键)。

由于enrollmentindex上存在密钥,我无法创建新的复合密钥。

尝试:

ALTER TABLE enrollments ADD PRIMARY KEY(username,shortname,role) 

- 导致错误代码1068

ALTER TABLE enrollments DROP PRIMARY KEY, ADD PRIMARY KEY(username,shortname,role)

- 导致错误代码1075

表中没有数据。

1 个答案:

答案 0 :(得分:2)

错误代码1068适用于多个主键(不允许)

错误代码1075用于不正确的表定义(必须将auto_increment字段定义为键)。看起来registermentindex是一个auto_increment字段,因此它需要包含在您的复合主键中。

我建议在username,shortname,role上创建一个单独的UNIQUE索引,如果这是你要强制的东西