Как определить отложенное ограничение в MySQL
Возможно ли создать первичный ключ в существующей таблице для столбца с повторяющимся значением? Я хочу, чтобы предыдущая запись не проверялась, но новая запись будет проверяться с помощью этого.Возможно ли это в mysql. Я знаю, что это возможно в Oracle ( вот пример ), но не имею представления о mysql.
3 answers
Ссылка , которую вы разместили в качестве комментария к ответу Ботаника-Стада, использует отложенные ограничения. Эти ограничения проверяются в конце транзакции, а не во время выполнения инструкции.
MySQL не поддерживает отложенные ограничения
Если вам абсолютно необходимы отложенные ограничения и вы хотите придерживаться базы данных с открытым исходным кодом, вам нужно будет перейти на PostgreSQL.
Нет, этого не может быть. Это нарушает то, что означает Первичный ключ. Но если вы хотите иметь составной первичный ключ, это может быть возможно
Первичный ключ всегда является уникальным идентификатором, если вы сделаете его не уникальным, он перестанет быть идентификатором, зачем вы хотите его повторить? Если у вас есть несколько записей с повторяющимся полем, это поле не является вашим первичным ключом, однако вы можете объединить его с другим полем, которое даст вам первичный ключ (не очень рекомендуется, но вы можете сделать это поле плюс поле метки времени вашим комбинированным первичным ключом).
В этом случае я бы рекомендовал сделать автоинкремент введите ключ и просто используйте это поле, которое повторяется как обычное поле, возможно, добавьте к нему индекс, чтобы улучшить поиск. Вы все еще можете искать записи в любом поле, просто потому, что это не ваш первичный ключ, это не значит, что вы не сможете его найти и получить. Идея первичного ключа заключается в том, что он даст вам 1 и только 1 запись, а не 1 или более.