Инструкция Insert для вставки данных из одной таблицы в другую

У меня есть следующий код SQL для вставки данных из одной таблицы в другую путем сравнения данных в двух таблицах. PK в таблице назначения [bomItem], [bomRev], [bomEntry].

Я хочу вставить if ItemID in source table = bomItem field in Dest. table AND [rev](field in Source tbl)NOT=[bomRev](in destination tbl).

При попытке запустить сценарий я получаю следующую ошибку

Msg 547, Уровень 16, Состояние 0, Строка 46
Инструкция INSERT конфликтует с ограничением внешнего ключа «FK_MIBOMD_MIBOMH». Конфликт произошел в базе данных «MITESTCO», таблице » dbo.MIBOMH».
Заявление было прекращено.

    USE [MITESTCO];
    GO

   INSERT INTO [MIBOMD] 
    ([bomItem], [bomRev], [bomEntry], [partId], [qty],[lead])
 SELECT [ItemID], [rev], [bomEntry], [partid], [qty],[lead]
 FROM [assy] 
 WHERE  [rev] IN (SELECT [bomRev] FROM [MIBOMH])
        AND [ItemID] IN (SELECT [bomItem] FROM [MIBOMH])
        AND [ItemID] IN (SELECT [ItemID] FROM [MIITEM])
        AND [partid] IN (SELECT [ItemID] FROM [MIITEM]);

1 ответ

  1. Отключение всех ограничений в базе данных —

    EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
    
    -- Insert data
    

    Чтобы снова включить их —

    exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"