значение может увеличиться на 1000Либо у вас есть репликация на этой базе данных, либо неправильно настроено восстановление после сбоя (без отката незавершённых транзакций).
с добавлением еще одного поля... логику которого нужно как раз и прописатьДа, в триггере либо вычислять пропущенный номер, либо завести отдельную таблицу неиспользованных номеров и брать из неё.
все варианты превратить в однотипные абстрактныеИмя не может быть абстрактным по-определению. Код может.