Это можно реализовать следующим образом, но есть несколько важных замечаний:
1. Сначала нужно понимать, что переиспользование ID не является общей практикой и не рекомендуется по многим причинам - целостность данных, столкновение с ID, следование истории и т. д.
2. В зависимости от используемого вами СУБД подходы могут немного отличаться.
Наиболее общий подход заключается в следующем:
- Создать таблицу, где будут храниться удаленные ID, которые можно переиспользовать.
- Сделать триггер или код в удалении, который будет добавлять идентификатор каждой удаленной записи в эту таблицу.
- Триггер или код на вставке, который будет проверять, есть ли доступные идентификаторы в этой таблице, и если да, то использовать его. Если нет, то использовать стандартный "текущий наибольший ID + 1".
С другой стороны, некоторые СУБД, такие как PostgreSQL, позволяют сбрасывать значения последовательности (sequence), и вы могли бы использовать этот метод, чтобы контролировать назначение новых значений ID. Однако это может привести к различным проблемам из-за вопросов целостности данных.
Тем не менее, повторю, что переиспользование значений ID - это обычно плохая практика. Если вы хотите поддерживать непрерывность номеров, вероятно, лучше подойдет другой подход, возможно, с использованием другого поля для этой цели.