MySQL ИСПОЛЬЗУЕТ ДУБЛИРОВАННЫЙ КЛЮЧ

#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.