[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Уникальный auto increment ID в MySQL
Страницы: 1, 2
nike90
Здравствуйте!

Можно ли средствами MySQL сделать, что бы новая запись с auto increment ID всегда увеличивалась и не перезаписывала ранее удаленные ID, что бы ID был всегда уникальный в плане (к примеру есть продукт с ID 10 и он был удален, что бы спустя время на его место не записался новый продукт на ID 10).

Заранее спасибо.
kaww
nike90, ничего не нужно делать, auto_increment работает именно так как вы описали.
kristall
А оно разве сразу из коробки не так?

_____________
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
nike90
В innoDb если было 1,2,3,4,5, удалили 5, перезапустили сервер, следующий номер будет опять 5.
kaww
nike90, зато в innodb есть внешние ключи, которые нивелируют эту проблему. Если рассматривать только в контексте базы данных
nike90
Еще я не раз сталкивался, что auto_increment мне перезаписывает ранее удаленные ID, ранее этому значения не придавал, а теперь не пойму как это происходит, не могу повторить ситуацию ....
kaww
nike90, в документации написано, что после запуска сервера при первой вставке выполняется запрос SELECT MAX(ai_col) FROM t FOR UPDATE; , после чего значение хранится в оперативной памяти. Т.е. достаточно, как ты уже сказал выше, перезапустить сервер, чтобы "сбросить" значение.
http://dev.mysql.com/doc/refman/5.0/en/inn...t-handling.html
bestxp
ну ответ резонный не использовать MySQL это уже даже назвать БД сложно, используй PostgreSQL если ты не хочешь проблем в будущем
nike90
Цитата (kaww @ 29.01.2015 - 10:46)
nike90, в документации написано, что после запуска сервера при первой вставке выполняется запрос SELECT MAX(ai_col) FROM t FOR UPDATE; , после чего значение хранится в оперативной памяти. Т.е. достаточно, как ты уже сказал выше, перезапустить сервер, чтобы "сбросить" значение.
http://dev.mysql.com/doc/refman/5.0/en/inn...t-handling.html

Так мне не нужно перезагружать сервер, мне нужно решить хотя бы проблему с замещением ранее удаленных ID.
Valick
Цитата
Так мне не нужно перезагружать сервер, мне нужно решить хотя бы проблему с замещением ранее удаленных ID

есть очень старый и простой вариант не удалять их, а просто помечать как удалённые

_____________
Стимулятор ~yoomoney - 41001303250491
nike90
Цитата
есть очень старый и простой вариант не удалять их, а просто помечать как удалённые


Это не вариант, так как будет много мусора в БД
stump
А что если не перезапускать сервер после каждого удаления строк? Ну удалил пару строк и ничего страшного! БД работает также, сервер также поддерживает БД. Автоинкремент будет устанавливать значение большее на 1 от предидущего записанного в БД значения так, как описывает nike90.

Или надо все таки каждый раз перезапускать сервер?

_____________
Трус не играет в хокей
Valick
Цитата
Или надо все таки каждый раз перезапускать сервер?

подозреваю что он у тс время от времени падает



_____________
Стимулятор ~yoomoney - 41001303250491
johniek_comp
Valick
так они и так помечаются по умолчанию, и не удаляются.

_____________
user posted image
Valick
johniek_comp, я хз что там у ТС


_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.