Я хотел бы изменить значение приращения столбца IDENTITY в базе данных, и у меня есть следующие ограничения:

  1. Не могу уронить столбец.
  2. Имея около 20 тысяч строк.

Решением будет удаление таблицы и ее воссоздание с измененным значением приращения. Я не знаю синтаксиса.

Не могли бы вы предложить синтаксис или другое наилучшее возможное решение?

Заранее спасибо!

2
Prakash Bhagat 29 Окт 2015 в 06:57

3 ответа

Лучший ответ

Если я правильно понимаю, на основании вашего ответа на мой комментарий, вы сделали резервную копию данных таблицы orig в таблице temp, затем вы удалили таблицу orig и хотите воссоздать таблицу orig.

Если это так, вам нужно IDENTITY_INSERT, чтобы установить ON и OFF, потому что идентификатор таблицы уникален.

Синтаксис:

SET IDENTITY_INSERT [TableName] ON -- set to on
-- Put your insert statement here
-- insert the data from backed up temp table to your new table
SET IDENTITY_INSERT [TableName] OFF -- set to off
3
japzdivino 29 Окт 2015 в 04:15

Изменение столбца идентификаторов после создания таблицы невозможно.

Вместо этого сбросьте значение SEED, используя команду ниже.

DBCC CHECKIDENT('tablename', RESEED, 15)
1
MusicLovingIndianGirl 29 Окт 2015 в 04:01

Если вы можете согласиться с воссозданием таблицы, в синтаксисе воссоздания таблицы нет ничего волшебного.

 CREATE TABLE temp_Table
 (
      -- Identity column with new settings
      -- other columns
 );

 INSERT INTO temp_Table
 SELECT -- Columns except identity column
 FROM old_table;

 DROP TABLE old_Table;

 EXEC sp_rename 'temp_Table', 'old_Table';

Однако вам придется обрабатывать внешний ключ самостоятельно.

2
qxg 29 Окт 2015 в 04:06