Как скопировать запись в таблицу SQL, но поменять уникальный идентификатор новой строки? - PullRequest
112 голосов
/ 29 сентября 2008

Этот вопрос приближается к тому, что мне нужно, но мой сценарий немного отличается. Исходная таблица и таблица назначения совпадают, а первичный ключ - это уникальный идентификатор (guid). Когда я пытаюсь это:

insert into MyTable
    select * from MyTable where uniqueId = @Id;

Я, очевидно, получаю нарушение ограничения первичного ключа, так как пытаюсь скопировать первичный ключ. На самом деле, я не хочу копировать первичный ключ вообще. Скорее, я хочу создать новый. Кроме того, я хотел бы выборочно копировать определенные поля, а остальные оставить пустыми. Чтобы усложнить задачу, мне нужно взять первичный ключ исходной записи и вставить его в другое поле копии (поле PreviousId).

Я уверен, что есть простое решение, я просто не знаю достаточно TSQL, чтобы понять, что это такое.

Ответы [ 11 ]

0 голосов
/ 17 марта 2010

Вы можете сделать так:

INSERT INTO DENI/FRIEN01P 
SELECT 
   RCRDID+112,
   PROFESION,
   NAME,
   SURNAME,
   AGE, 
   RCRDTYP, 
   RCRDLCU, 
   RCRDLCT, 
   RCRDLCD 
FROM 
   FRIEN01P      

Там вместо 112 вы должны указать номер максимального идентификатора в таблице DENI / FRIEN01P.

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