К примеру, есть 3 записи, в каждой Id ([id’s]: 1,2,3). Если я удалю одну запись, и создам новую, у неё id будет уже 4, и будет выглядить это так ([id’s]: 1,2,4). Как через php, или бд можно сделать так чтобы id записей упорядочивались, тоесть были ([id’s]: 1,2,3)
Evasium09, как бы оставлять промежутки. была запись с id - 3 пользователь с ней работал и работал, потом ее кто то удалил. Он заходит и вы ему подсовывает запись с другими данными? Это не правильно. Должно отдаваться - 404 запись не найдена, или запись удалена или еще чего.
Варианты:
1) Перед удалением записи узнать её id. Вставить новую запись с указанным id.
2) Удаляя запись, записывать её id в другую таблицу - отдельную таблицу для id.
При вставке новой записи, смотреть есть ли в таблице для id айди.
Если есть - вставлять новую запись с указанным id (и удалить этот id из таблицы для id). Иначе вставлять запись с автоинкрементным айди.
PS
Id обычно первичный ключ. Нельзя вот так просто сдвинуть ключи т.к. одна запись удалилась.
Поэтому и создается новый id, например 4, когда до этого удалили 3.
По идее в бд сейчас айди 1 и 2 и 3 свободен. Но не известно на что ссылался этот ключ, на какие таблицы.
Если речь об автоинкрементном поле-первичном ключе, то забудь про сию хотелку, и чем скорее, тем лучше.
PRIMARY KEY выполняет в таблице только одну функцию - однозначно идентифицирует запись. В нормальных условиях значение такого поля используется исключительно для связывания данных (установления соответствия), и надобности видеть значение этого поля не существует в принципе.
То, что хочешь ты - это не что иное как попытка на такое поле взвалить ещё одну функцию - последовательной и неразрывной нумерации. Само поле для этого не предназначено, а попытка всё же реализовать эту хотелку ломает нормальный алгоритм работы, не говоря уж о сопутствующем геморрое с перенумерациями.
В общем, надо тебе поле-нумератор? создай для этого дела ещё одно поле, просто числовое, не автоинкремент, и заполняй программно. А ещё лучше - организуй односвязный список, и нумеруй прямо в запросе на получение данных.