У меня есть таблица с полем, которое увеличивается. Значения для этого поля: 1, 2, 3...60
, а затем поле 1060
.Вопросы о приращении оператора
Я не знаю почему?
Следующее значение для идентификатора должно быть 61
.
У меня есть таблица с полем, которое увеличивается. Значения для этого поля: 1, 2, 3...60
, а затем поле 1060
.Вопросы о приращении оператора
Я не знаю почему?
Следующее значение для идентификатора должно быть 61
.
Предполагается, что вы имеете в виду поле IDENTITY с приращением 1. Это увеличивает значение на 1 каждый раз при вставке новой записи.
Цитирую:
Если столбец идентификаторов существует для таблицы с частыми делеций, зазоры может происходить между значениями идентичности. Если это вызывает беспокойство, не используйте свойство IDENTITY. Однако для обеспечения того, чтобы отсутствовали пробелы или заполнили существующий пробел, оцените существующие значения , прежде чем явно ввести один из них с SET IDENTITY_INSERT ON.
Как указано в комментариях, вероятно, эта таблица имела данные, заполненные всеми отсутствующими значениями, но они были удалены. (Поскольку это довольно большой кусок, возможно, это было сделано в объеме?)
Там может быть несколько причин - некоторые из наиболее вероятно:
DBCC CHECKIDENT ({table}, RESEED, {value});
SET IDENTITY_INSERT ON
Автоинкрементные поля не гарантировано последовательный. Гарантируется, что уникально. Если вам нужно, чтобы они были последовательными, я бы порекомендовал отслеживать следующий идентификатор самостоятельно, что потребует от вас подумать о параллелизме, ссылках на внешние ключи и т. Д.
Это новая функция SQL Server 2012. Identity столбцы используют Sequences
, а значения обналичены по умолчанию, чтобы ускорить при вставке новых строк. Когда происходит незапланированное завершение работы SQL Server, кеш теряется и значения Identity продолжают с зазором (обычно 1000 или 10000).
Вы удалили данные из таблицы? Если вы это сделали, вам может потребоваться повторить идентификацию. – Taryn
Возможный дубликат [Сбросить автоинкремент в SqlServer после удаления] (http://stackoverflow.com/questions/510121/reset-autoincrement-in-sqlserver-after-delete) – Taryn
Если вы всегда полагаетесь на поле 'IDENTITY' имея непрерывную «цепочку» целочисленных значений, я боюсь, что вы используете ее не по назначению. Поля 'IDENTITY' являются ** суррогатными ключами ** и поэтому не имеют реального значения. – gvee