我有一个表,其中包含两个作为 ID 的 int 值。这些 ID 单独可以在表格中出现任意次数,但它们一起只能出现一次。
有没有办法使一对值唯一并且仍然允许单个值多次显示?
作为后续,如果可能的话,这对值可以用作键吗?我目前有一个第三列用于我的键的唯一自动增量值。
我有一个表,其中包含两个作为 ID 的 int 值。这些 ID 单独可以在表格中出现任意次数,但它们一起只能出现一次。
有没有办法使一对值唯一并且仍然允许单个值多次显示?
作为后续,如果可能的话,这对值可以用作键吗?我目前有一个第三列用于我的键的唯一自动增量值。
它被称为复合键。
如果要将实际 PK 更改为复合 PK,请使用
Alter table <your table> drop PRIMARY KEY;
Alter table <your table> drop COLUMN <your autoincremented column>;
Alter table <your table> add [constraint <constraint name>] PRIMARY KEY (<col1>, <col2>);
您也可以只添加一个唯一约束(您的 PK 将是相同的,并且唯一对......必须是唯一的)。
alter table <your table> add [constraint <constraint name>] unique index(<col1>, <col2>);
就个人而言,我会推荐第二种解决方案(简单的 PK + 唯一约束),但这只是个人观点。您可以在 Google 上搜索有关复合键的优缺点。
之间的部分[]
是可选的。
编辑
如果您想在 create table 语句中执行此操作
对于复合 pk
CREATE TABLE Test(
id1 int NOT NULL,
id2 int NOT NULL,
id3 int NOT NULL,
PRIMARY KEY (id1, id2)
);
对于唯一索引
CREATE TABLE Test1(
id1 int NOT NULL AUTO_INCREMENT,
id2 int NOT NULL,
id3 int NOT NULL,
PRIMARY KEY (id1),
UNIQUE KEY (id2, id3)
);
尝试这个:ALTER TABLE table_name ADD CONSTRAINT uc_name UNIQUE (col1,col2)
添加primary key (col1, col2)
到您的创建表定义