Копирование автоинкрементных данных - PullRequest
1 голос
/ 04 августа 2010

В моей тестовой базе данных есть теги с данными.

ID int autoincrement
Name nvarchar(255)

Я хочу перенести эту таблицу в свою производственную базу данных.

Как это сделать, если я хочу иметь те же идентификаторыforeach element

Проблема в том, что мой начальный индекс в testdatable равен 15, а некоторые идентификаторы не существуют, потому что я удалил их.

Итак:

Ситуация в Test datable

15 sport
18 money
30 homework

Желаемая ситуация в производственной базе данных

15 sport
18 money
30 homework

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

Ответы [ 3 ]

5 голосов
/ 04 августа 2010

Используйте функцию identity_insert в таблице назначения перед вставкой данных в новую таблицу.

SET IDENTITY_INSERT YourNewTable ON

INSERT YourNewTable (ID, Name) SELECT ID,Name FROM YourOldTable

SET IDENTITY_INSERT YourNewTable OFF
1 голос
/ 04 августа 2010

вы можете использовать

SET IDENTITY_INSERT MY_TABLE ON
INSERT MY_TABLE (Id, Field1) VALUES (15, 'sport')
SET IDENTITY_INSERT MY_TABLE OFF

или сделайте резервную копию / восстановление, если база данных prod пуста, как вы сказали (при условии, что это та же база данных)

1 голос
/ 04 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...