Я выполняю инструкцию INSERT INTO SELECT в SQL Server. Дело в том, что есть два основных ключа из двух разных таблиц, без каких-либо общих черт, которые являются и внешними ключами третьей таблицы, образуя составной первичный ключ в этой последней таблице. Обычно это может быть достигнуто с помощью перекрестного соединения - например,INSERT INTO SELECT CROSS JOIN Composite Primary Key
Table1.ID(PK)
Table2.Code(PK)
-- Composite PK for Table3
Table3.ID(FK)
Table3.Code(FK)
INSERT INTO Table3
SELECT ID, Code
FROM Table1
CROSS JOIN Table2
WHERE Some_conditions...
Я получаю «Не удается вставить повторяющуюся ключевую строку» ошибка. Это не позволит Table2.Code повторяться в Таблице 3, поскольку это уникальный идентификатор, хотя первичный ключ Table3 является Table1.ID в сочетании с Table2.Code. Следовательно, следующие пары должны быть распознаны как разные значения PK в таблице 3, например: {1024, PSV} и {1027, PSV}.
Есть ли способ исправить это, или я неправильно создал эту базу данных? Я рассмотрел создание третьего уникального идентификатора для Table3, но в этом сценарии это очень нецелесообразно.
Казалось бы, у вас уже есть данные в таблице, которые конфликтуют с новыми строками. –
Стол пуст. –
Можете ли вы разместить фактические определения таблиц и несколько строк первых двух таблиц? До сих пор не так много подробностей, и сложно сказать, что происходит. –