簡體   English   中英

如何在MySQL中強制復合唯一性?

[英]How can I enforce compound uniqueness in MySQL?

我遇到過一種情況,我希望確保表的復合元素是唯一的。 例如:

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鍵約束:

ALTER TABLE `table_name` ADD UNIQUE (
`fieldA`,
`fieldB`
);

在表定義中添加UNIQUE鍵:

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 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM