Можете ли вы указать, почему вам это нужно? Похоже, что может быть лучший способ удовлетворить общую потребность.
Однако, если все, что вам нужно, это следующее число в последовательности, то это должно работать:
SELECT MAX(ID) + 1 FROM Table
Edit: Я только заметил, от ответа Томаса (и снова осматривая вопрос), что похоже, что вы ищете первый пробел, который может быть или не быть следующим числом. Но я думаю, что все еще остается ... почему?
Редактировать: Я рад, что вы приняли ответ, но я все еще думаю, что к этому больше. Например, если вы просто хотите «зарезервировать» идентификатор, тогда есть несколько способов сделать это.
GUID полезны для идентификаторов, создаваемых приложением, но не должны использоваться в качестве первичных ключей по соображениям производительности. У вас может быть второй столбец как GUID и использовать его в своем приложении, позволяя простому столбцу автоинкремент быть первичным ключом. Предпринимаются дальнейшие соображения производительности, и вы должны исследовать их.
С другой стороны, есть что-то, что называется Hi/Lo Algorithm для резервирования диапазонов идентификаторов базы данных. Он использует целые числа, которые отлично подходят для индексирования и делают большие первичные ключи. Он оставляет пробелы в последовательности, но это следует ожидать в любом случае даже с регулярным автоматически созданным столбцом (например, когда запись удаляется).
Если есть требование, чтобы в идентификаторах не было пробелов, это звучит как нечетное требование к бизнесу и должно анализироваться для его истинных потребностей. Что-то вроде этого не должно перетекать в первичный ключ в сохранении данных.
Вы хотите (наивысший + 1) или первый пробел? – gbn 2010-12-09 20:28:17
И вы не хотите использовать столбец Identity, потому что ... – 2010-12-09 20:28:23