2015-09-03 4 views
1

Я написал запрос для объединения двух табличных данных в один. Этот запрос отлично работает, когда я пытаюсь вставить значения, когда значения первичного ключа различны. Но если я попытаюсь вставить значения, которые являются такими же (значения первичного ключа) во второй таблице, то это приводит к ошибке:Ограничение основного ключа

Нарушение ограничения PRIMARY KEY 'PK_Person'. Невозможно вставить дубликат ключа в объект «dbo.Person».

Это запрос, который я написал:

вставки в DB1.dbo.Person выбрать * из db2.dbo.Person

Как я заменить значения первичного ключа или если пропустить эту строку там являются дублирующими первичными ключами.

ответ

0

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

+0

Спасибо за ваше предложение. Я это возможно, если у меня есть от 2 до 3 таблиц, но что, если у меня есть от 20 до 30 таблиц, которые мне нужно объединить данные. Невозможно создать много временных таблиц. –

+0

Эта статья поможет вам здесь [ссылка] (http://www.w3resource.com/sql/joins/using-a-where-cluase-to-join-three-or-more-tables-based-on -a-parent-child-relationship.php) –

+0

Я написал запрос, который объединяет данные из двух таблиц, исключая данные первичного ключа (если присутствует в 1-й таблице). INSERT INTO DB1.dbo.Person (Id, Name, Age) ВЫБРАТЬ Id, имя, возраст от DB2.dbo.Person WHERE Id NOT IN (SELECT Id FROM DB1.dbo.Person) Недостаток состоит в том, что я необходимо будет указать имена столбцов и первичные ключи. Я хотел бы знать, есть ли другой способ сделать это. Я имею в виду без упоминания имени столбца. По умолчанию он должен взять первичный ключ и слить его. –

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