@Ezekiel4
Охотник на пиратов и сборщик монолитов

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

Таблица
ID : INT UNSIGNED
USER_ID : BIGINT
TITLE : VARCHAR(500)
CHECKED : BOOL
Я делаю запрос вида:
INSERT INTO `testDB`.`table1` (`USER_ID`, `TITLE`, `CHECKED`) VALUES ('707', 'ExmpleString', '0');

У меня была строка под номером, например, 10. Теперь добавилась 11-я.
Далее я делаю запрос:
DELETE FROM `testDB`.`table1` WHERE (`ID` = '11');
Строка 11 удаляется. Когда я повторяю запрос с добавлением, в таблице появляется не 11 строка, а 12. Хотя 11 строки нет.
Также если я удалю, например, все строки с 1 по 9, оставив 10, то больше не смогу заполнить эти строки без указания соответствующего параметра, например для 2 строки:
INSERT INTO `testDB`.`table1` (`ID`, `USER_ID`, `TITLE`, `CHECKED`) VALUES ('2', '707', 'ExmpleString', '0');


Вопрос: как настроить таблицу так, чтобы новые записи добавлялись в самое первое пустое место таблицы?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Ок, представим что вы настроили подобный механизм (хотя очевидно что это сделано не просто так), и теперь у вас есть предположим пользователи с номерами 10 и 11. У каждого из них есть некоторые данные, которые привязаны к этому пользователю по id. Теперь мы удаляем пользователя под номером 10, а потом создаем нового, который займет это место. Теперь владельцем всех данных удаленного пользователя будет новый пользователь, который как бы не должен иметь к ним доступа.

Это банальный и самый простой пример, больше для понимания... Уникальный идентификатор он на то и уникальный, что более не будет повторяться и гарантирует эту неповторяемость на уровне механизма работы бд.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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