#mysql #sql
#mysql #sql
Вопрос:
Мне интересно, возможно ли иметь несколько первичных ключей …. как в….
id name description slug
Возможно ли для меня выполнить ON DUPLICATE KEY
запрос, относящийся к slug
, когда у меня есть id
столбец, который автоматически увеличивается….
Ответ №1:
ДА. Вам просто нужно создать УНИКАЛЬНЫЙ индекс для slug.
Комментарии:
1. Сладко — так что, пока я не включу
id
в запрос insert, он будет только проверятьslug
(предполагаяslug
, что он существует)2. Ага. В любом случае вы никогда не должны включать идентификатор при вставке, поскольку это автоинкремент. Если вы это сделаете, вы в конечном итоге удовлетворяете потенциально катастрофическому условию в моем комментарии к ответу Аджая.
3. О, и еще кое-что… для ускорения, я полагаю, вам также может потребоваться добавить стандартный индекс в slug для чтения.
4. Зеленый: достаточно уникального индекса, он будет использоваться при поиске.
5. @MarkR Я не был уверен, что это попало в кеш ключей. Приятно знать, спасибо.
Ответ №2:
Да, вы можете создать составной первичный ключ или можете создать индекс для другого поля.
Комментарии:
1. Насколько я понимаю, составной первичный ключ сделал бы поле ID больше не уникальным само по себе. Хотя в целом все было бы в порядке, при первой попытке ВСТАВИТЬ и случайно добавить идентификатор в качестве одного из значений ваша база данных окажется в проблемном состоянии.
2. Я не думаю, что это сделало бы то, что хочет OP.