我遇到了要确保表的复合元素唯一的情况。例如:

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 }} 不会是。

最佳答案

在表定义中添加一个UNIQUE键:

Table (
  id char(36) primary key,
  fieldA varChar(12) not null,
  fieldB varChar(36) not null,
  UNIQUE fieldA_fieldB (fieldA, fieldB)
)

关于sql - 如何在MySQL中强制执行复合唯一性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1059265/

10-13 03:19