如何在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 );