Как определить отложенное ограничение в MySQL


Возможно ли создать первичный ключ в существующей таблице для столбца с повторяющимся значением? Я хочу, чтобы предыдущая запись не проверялась, но новая запись будет проверяться с помощью этого.Возможно ли это в mysql. Я знаю, что это возможно в Oracle ( вот пример ), но не имею представления о mysql.

Author: a_horse_with_no_name, 2012-07-16

3 answers

Ссылка , которую вы разместили в качестве комментария к ответу Ботаника-Стада, использует отложенные ограничения. Эти ограничения проверяются в конце транзакции, а не во время выполнения инструкции.

MySQL не поддерживает отложенные ограничения

Если вам абсолютно необходимы отложенные ограничения и вы хотите придерживаться базы данных с открытым исходным кодом, вам нужно будет перейти на PostgreSQL.

 5
Author: a_horse_with_no_name, 2012-07-23 07:10:28

Нет, этого не может быть. Это нарушает то, что означает Первичный ключ. Но если вы хотите иметь составной первичный ключ, это может быть возможно

 3
Author: Madhivanan, 2012-07-16 09:38:12

Первичный ключ всегда является уникальным идентификатором, если вы сделаете его не уникальным, он перестанет быть идентификатором, зачем вы хотите его повторить? Если у вас есть несколько записей с повторяющимся полем, это поле не является вашим первичным ключом, однако вы можете объединить его с другим полем, которое даст вам первичный ключ (не очень рекомендуется, но вы можете сделать это поле плюс поле метки времени вашим комбинированным первичным ключом).

В этом случае я бы рекомендовал сделать автоинкремент введите ключ и просто используйте это поле, которое повторяется как обычное поле, возможно, добавьте к нему индекс, чтобы улучшить поиск. Вы все еще можете искать записи в любом поле, просто потому, что это не ваш первичный ключ, это не значит, что вы не сможете его найти и получить. Идея первичного ключа заключается в том, что он даст вам 1 и только 1 запись, а не 1 или более.

 2
Author: hjpotter92, 2012-07-16 09:39:42