Ответ 1
Вы можете определить индекс для нескольких столбцов, например:
CREATE UNIQUE INDEX arbitrary_index_name ON table_name (title, store);
Есть ли способ в 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?
Вы можете определить индекс для нескольких столбцов, например:
CREATE UNIQUE INDEX arbitrary_index_name ON table_name (title, store);
Да. Вместо двух отдельных уникальных ограничений вы должны создать единственное уникальное ограничение для обоих столбцов.
Синтаксис 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);
Вам также придется отказаться от двух неправильных уникальных индексов, которые вы создали.
Подробнее о создании индексов см. .
Вам нужен многоколоночный уникальный ключ.
ALTER TABLE table_name
ДОБАВИТЬ УНИКАЛЬНЫЙ ИНДЕКС (title
, store
);
Да, вы можете!
ALTER TABLE table_name DROP PRIMARY KEY;
ALTER TABLE table_name ADD PRIMARY KEY(title, store);