2015-10-29 1 views
2

Я хотел бы изменить приращение значения столбца IDENTITY в базе данных, и я ниже ограничений:Изменение значения инкремента для идентичности - SQL Server 2005

  1. Невозможно удалить столбец.
  2. Имея около 20k строк.

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

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

Спасибо заранее!

+0

вы можете показать свой код? , мы можем исправить это. – Japongskie

+0

@JapzDivino: На самом деле я попытался скопировать данные в таблицу temp и удалить исходную таблицу. Снова создала оригинальную таблицу, но зациклилась на том, как копировать данные обратно с исходным значением столбца идентификации, который я взял в таблице temp. –

+1

посмотреть 'SET IDENTITY_INSERT' – cha

ответ

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 
+0

Исправить. Большое вам спасибо :) –

+0

Рад, что я помогу, ваш прием .. счастливое кодирование :) – Japongskie

1

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

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

DBCC CHECKIDENT('tablename', RESEED, 15) 
+0

Спасибо за ответ. Да, изменение на сервере mssql невозможно. Поэтому хочу знать альтернативу. –

2

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

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'; 

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

Смежные вопросы