Недавно я унаследовал базу данных, на которой одна из таблиц имеет первичный ключ, состоящий из закодированных значений (Part1 * 1000 + Part2).
Я нормализовал этот столбец, но я не могу изменить старые значения. Так что теперь у меня естьКак найти «дыры» в таблице
select ID from table order by ID
ID
100001
100002
101001
...
Я хочу, чтобы найти «дыры» в таблице (точнее, первая «дыра» после 100000) для новых строк.
Я использую следующий выбор, но есть ли лучший способ сделать это?
select /* top 1 */ ID+1 as newID from table
where ID > 100000 and
ID + 1 not in (select ID from table)
order by ID
newID
100003
101029
...
База данных - это Microsoft SQL Server 2000. Я в порядке с использованием расширений SQL.
Просто из любопытства, какова мотивация поиска этих «дыр»? Это интеллектуальный ключ? – 2008-10-06 15:32:53
База данных предназначена для системы контроля доступа на моей работе. В старой базе данных Part1 был кодом компании, а Part2 был кодом Employee. Если человек переключил компании, ему придется выпустить новую карточку. Система чтения карт требует 6 цифр, поэтому новые карты начинаются с 100000, за исключением существующих. – pmg 2008-10-06 15:57:58