如何在MySQL中强制复合唯一性?
我遇到了这样一种情况:我希望确保表的复合元素是唯一的。例如:如何在MySQL中强制复合唯一性?,sql,mysql,database-design,Sql,Mysql,Database Design,我遇到了这样一种情况:我希望确保表的复合元素是唯一的。例如: Table ( id char(36) primary key, fieldA varChar(12) not null, fieldB varChar(36) not null ) 我不希望fieldA和fieldB成为复合主键,因为它们经常更改,“id”在整个系统中用作参考 fieldA和fieldB本身并不是唯一的,但它们的组合必须是唯一的。例如,{{1,Matt,Jones},{2,David,Jones},{3
Table (
id char(36) primary key,
fieldA varChar(12) not null,
fieldB varChar(36) not null
)
我不希望fieldA和fieldB成为复合主键,因为它们经常更改,“id”在整个系统中用作参考
fieldA和fieldB本身并不是唯一的,但它们的组合必须是唯一的。例如,{{1,Matt,Jones},{2,David,Jones},{3,Matt,Smith}}将是有效数据,但{1,Matt,Jones},{2,Matt,Jones}将不是有效数据。您可以在两个字段上添加唯一的键约束:
ALTER TABLE `table_name` ADD UNIQUE (
`fieldA`,
`fieldB`
);
将唯一键添加到表定义中:
Table (
id char(36) primary key,
fieldA varChar(12) not null,
fieldB varChar(36) not null,
UNIQUE fieldA_fieldB (fieldA, fieldB)
)
显然,我只需要再看一眼文档!非常感谢。
ALTER Table ADD UNIQUE ( fieldA, fieldB );