SQL-Как вставить строку без автоматического увеличения столбца идентификатора?
У меня есть таблица с принудительным автоинкрементным столбцом, и этот столбец является очень ценным идентификатором, который сохраняется во всем приложении. Извините, что с моей стороны было плохой разработкой, чтобы это было автоматически увеличивающимся столбцом.
Итак, вот проблема. Мне нужно вставить в эту таблицу идентификатор для столбца, который уже был создан и удален из таблицы. Как будто воскресить этот идентификатор и вернуть его обратно в таблицу.
Итак, как я могу сделать это программно, не увеличивая приращение столбца. Исправьте меня, если я ошибаюсь, если я отключу его программно, он перезапустится с 0 или 1, и я не хочу, чтобы это произошло...
Ответы
Ответ 1
Если вы находитесь в Microsoft SQL Server, вы можете "отключить" функцию autoIncrementing, выпустив инструкцию
Set Identity_Insert [TableName] On
-- --------------------------------------------
Insert TableName (pkCol, [OtherColumns])
Values(pkValue, [OtherValues])
-- ---- Don't forget to turn it back off ------
Set Identity_Insert [TableName] Off
Ответ 2
В дополнение к ответу Чарльза (который теперь на 100% правильный:-) и который сохраняет текущее значение IDENTITY в таблице), вы также можете проверить текущее значение IDENTITY на таблице - вы можно сделать это с помощью этой команды здесь:
DBCC CHECKIDENT('YourTableName')
Если вам когда-нибудь понадобится изменить, вы можете сделать это, используя эту команду здесь:
DBCC CHECKIDENT ('YourTableName', RESEED, (new value for IDENTITY) )
Ответ 3
Собственно, код, указанный выше для INDENTITY_INSERT, правильный - включение его ON указывает серверу, который вы хотите вставить значения самостоятельно. Он позволяет вставлять значения в столбец IDENTITY. Затем вы хотите отключить его (позволяя серверу генерировать и вставлять значения), когда вы закончите.