StrangeAttractor
@StrangeAttractor

Как утрамбовать идентификаторы в MySQL?

Вот допустим есть несколько таблиц в которых используются автоинкрементные идентификаторы. Между таблицами активно используются внешние ключи, контроль ссылочной целостности (но отключить базу ненадолго можно). Подобавляли элементов, часть из них поудаляли, работаем дальше, в порядке нумерации появились "дыры". Надо уменьшить все айдишники (и счётчик для следующего нового айдишника) так, чтобы нумерация снова стала непрерывной.

Как это сделать (кроме очевидного варианта с написанием собственной программы, которая будет делать всё это "вручную")?

Вопрос "зачем это надо?" оставим в оффтопиках, понятно что не надо такое почти никогда, особенно в продакшене, но всё же интересно, в определённых контекстах смысл есть.
  • Вопрос задан
  • 2339 просмотров
Пригласить эксперта
Ответы на вопрос 2
saltiveratia
@saltiveratia
Триггерами, наверное. И неплохо было бы спрашивать у бд перед записью нового поля о номере наибольшего предыдущего и присваивать следующий.
Программы не получится, получится mysql функция на пару строк.
Ответ написан
У вас не будет случайного обращения к удалённой записи и вместо удалённой в одном месте выдаст другую а из-за того что все сдвинутся всё не перепутается? В CMS, например, это так ))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы