MySQL уникальное имя для каждого индекса в таблице - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть следующая таблица, где id_A и id_B являются первичными ключами

id_A   id_B  name
------------------
1       1    Bob
1       2    Jerry
2       1    Anna

Я хочу убедиться, что «имя» всегда уникально для данного id_A, но мне разрешено иметь повторяющиеся имена для разных значений id_B. Так, например, если допустить, что значения таблицы выше

id_A=3, id_B=1, name="Bob" будут допустимыми, а
id_A=2, id_B=2, name="Anna" - нет.

Нужно ли настраивать дополнительную таблицу для выполнения sh это? Я попытался создать таблицу, в которой первичными ключами были id_A и name, и связал ее с исходной таблицей. Однако это не позволило мне обновить каждую таблицу по отдельности, поскольку она жаловалась на то, что не прошла ограничение внешнего ключа.

Спасибо.

1 Ответ

1 голос
/ 04 февраля 2020

Вы можете добавить клавишу UNIQUE к id_A и name, т.е.

ALTER TABLE data ADD UNIQUE (id_A, name);

, что предотвратит вставку дублированного значения name для данного значения id_A.

Демонстрация по dbfiddle

...