Как я могу обеспечить составную уникальность в MySQL? - PullRequest
7 голосов
/ 29 июня 2009

Я столкнулся с ситуацией, когда хочу убедиться, что составной элемент таблицы уникален. Например:

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

Я не хочу, чтобы fieldA и fieldB были составным первичным ключом, так как они часто меняются, а «id» используется в качестве ссылки во всей системе.

fieldA и fieldB не являются уникальными сами по себе, но их комбинации должны быть уникальными. Так, например, {{1, Мэтт, Джонс}, {2, Дэвид, Джонс}, {3, Мэтт, Смит}} будут действительными данными, но {{1, Мэтт, Джонс}, {2, Мэтт, Джонс }} не будет.

Ответы [ 3 ]

11 голосов
/ 29 июня 2009

Вы можете добавить уникальное ограничение ключа для двух полей:

ALTER TABLE `table_name` ADD UNIQUE (
`fieldA`,
`fieldB`
);
7 голосов
/ 29 июня 2009

Добавьте уникальный ключ к определению таблицы:

Table (
  id char(36) primary key,
  fieldA varChar(12) not null,
  fieldB varChar(36) not null,
  UNIQUE fieldA_fieldB (fieldA, fieldB)
)
1 голос
/ 29 июня 2009
ALTER Table ADD UNIQUE ( fieldA, fieldB );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...