Mysql объединил уникальные ключи

Есть ли способ в MySQL иметь два уникальных ключа и каким-то образом связать их?

например, если у меня есть следующая таблица, а "title" и "store" - это уникальные ключи

id | category | title       | price | store
1  | outdoors | fishing rod | 59.99 | wal-mart
2  | auto     | Penzoil Oil | 9.99  | target

и я пытаюсь вставить следующую запись. Эта новая запись будет проигнорирована, поскольку заголовок является "удочкой", а в магазине "wal-mart", и существует существующая запись с этим названием и хранением

   | outdoors | fishing rod | 30.99 | wal-mart

но если я попытаюсь вставить следующую запись, она будет принята, потому что нет записи, которая существует с названием "удочка" и сохранением "цели"

   | outdoors | fishing rod | 30.99 | target

это возможно только с MySQL?

Ответ 1

Вы можете определить индекс для нескольких столбцов, например:

CREATE UNIQUE INDEX arbitrary_index_name ON table_name (title, store);

Ответ 2

Да. Вместо двух отдельных уникальных ограничений вы должны создать единственное уникальное ограничение для обоих столбцов.

Синтаксис CREATE INDEX:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [index_type]
    ON tbl_name (index_col_name,...)
    [algorithm_option | lock_option] ...

В вашем примере это будет выглядеть примерно так:

CREATE UNIQUE INDEX index_name ON tbl_name (title,store);

Вам также придется отказаться от двух неправильных уникальных индексов, которые вы создали.

Подробнее о создании индексов см. .

Ответ 4

ALTER TABLE table_name ДОБАВИТЬ УНИКАЛЬНЫЙ ИНДЕКС (title, store);

Ответ 5

Да, вы можете!

ALTER TABLE table_name DROP PRIMARY KEY;
ALTER TABLE table_name ADD PRIMARY KEY(title, store);