Я создаю объединение двух таблиц, каждая таблица имеет один и тот же уникальный первичный ключ (идентификатор модуля). Я хотел бы создать новый уникальный первичный ключ из столбца Module ID, так как в настоящее время он содержит дубликаты.
Как я могу сделать так, чтобы идентификатор модуля после объединения подсчитывался вверх от максимума первого идентификатора модуля? Короче говоря, как я могу сделать идентификатор модуля уникальным после объединения?
set identity_insert dpm.Module on
insert into dpm.Module
(
dpm.Module.[Module ID],
dpm.Module.[Module Xbrl Schema Ref]
)
select
dpm.Module.[Module ID],
dpm.Module.[Module Xbrl Schema Ref]
from [DPM].[Module]
union
select
dpm.Module.[Module ID],
replace(dpm.Module.[Module Xbrl Schema Ref],'.xsd','_bbk.xsd') as [Module Xbrl Schema Ref]
from
[DPM].[Module]
Надеюсь, теперь стало понятнее;)
Почему бы не использовать set identity_insert dpm.Module on, а затем исключить идентификатор из INSERT? Затем новая таблица создаст новый идентификатор для каждой строки. Кажется, вы пытаетесь изобрести велосипед.
Я пробовал это. Но я получаю эту ошибку: явное значение должно быть указано для столбца идентификатора в таблице «Модуль» либо когда для IDENTITY_INSERT установлено значение ON, либо когда пользователь репликации вставляет столбец идентификатора NOT FOR REPLICATION.
Это сообщение об ошибке сообщает вам, что находятся использует set identity_insert dpm.Module on ... Вам нужно выключить его, если вы уже включили его.
Спасибо, что ответили на мой вопрос!


Итак, какой у вас вопрос? Вы забыли спросить об одном! :)