Подтвердить что ты не робот

SQL-Как вставить строку без автоматического увеличения столбца идентификатора?

У меня есть таблица с принудительным автоинкрементным столбцом, и этот столбец является очень ценным идентификатором, который сохраняется во всем приложении. Извините, что с моей стороны было плохой разработкой, чтобы это было автоматически увеличивающимся столбцом.

Итак, вот проблема. Мне нужно вставить в эту таблицу идентификатор для столбца, который уже был создан и удален из таблицы. Как будто воскресить этот идентификатор и вернуть его обратно в таблицу.

Итак, как я могу сделать это программно, не увеличивая приращение столбца. Исправьте меня, если я ошибаюсь, если я отключу его программно, он перезапустится с 0 или 1, и я не хочу, чтобы это произошло...

4b9b3361

Ответ 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. Затем вы хотите отключить его (позволяя серверу генерировать и вставлять значения), когда вы закончите.