Используя MySQL 5.1.49, я пытаюсь реализовать систему тегов, у меня проблема с таблицей из двух столбцов: id(autoincrement)
, tag(unique varchar)
(InnoDB)
При использовании запроса INSERT IGNORE INTO tablename SET tag="whatever"
значение автоинкремента id
увеличивается, даже если вставка была проигнорирована.
Обычно это не будет проблемой, но я ожидаю много возможных попыток вставитьдубликаты для этой конкретной таблицы, что означает, что мое следующее значение для поля id
новой строки будет слишком сильно перепрыгивать.
Например, я получу таблицу с, скажем, 3 рядами, но плохая id
1 | test
8 | testtext
678 | testtextt
Кроме того, если я не выполняю INSERT IGNORE
, а просто выполняю обычный INSERT INTO
и обрабатываю ошибку, поле автоматического приращения все еще увеличивается, поэтому следующая истинная вставка все ещенеправильное автоинкремент.
Есть ли способ остановить автоинкремент, если есть попытка дублирования строки INSERT
?
Как я понимаю для MySQL 4.1, это значение не будет увеличиваться, но последнеечто я хочу сделать, это в конечном итоге либо делать много SELECT
заявления заранее, чтобы проверить, существуют ли теги, или еще хуже, понизить мою версию MySQL.