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

28

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

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

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

MS-SQL сервер для этого вопроса ... SpoiledTechie.com
Какую СУБД вы используете? Quassnoi

Ваш Ответ

3   ответа
69

вы можете "отключить" функция автоинкрементации путем выдачи оператораSet Identity_Insert [TableName] On, как в:

  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
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded SpoiledTechie.com
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
3

приведенный выше код для INDENTITY_INSERT верен - его включение говорит серверу, что вы хотите вставить значения самостоятельно. Это позволяет вам вставлять значения в столбец IDENTITY. Затем вы захотите выключить его (что позволит серверу генерировать и вставлять значения), когда вы закончите.

8

-) и который сохраняет текущее значение IDENTITY в таблице), вы также можете проверить текущее значение IDENTITY для таблицы - вы можете сделать это с помощью этой команды здесь:

DBCC CHECKIDENT('YourTableName')

Если вам когда-либо нужно на самом делеchange это, вы можете сделать это с помощью этой команды здесь:

DBCC CHECKIDENT ('YourTableName', RESEED, (new value for IDENTITY) )

Похожие вопросы