@protsey

Какова последовательность действий для заполнения данными таблиц с такой связью?

Добрый день. Есть база данных порядка 100 таблиц, которая вручную сейчас заполняется данными из нескольких таких же по структуре баз. В этой структуре наткнулся на место, которое никак не могу понять как нужно заполнять, в какой последовательности и какие манипуляции производить. На картинке визуализирую связь между двумя таблицами, которые ссылаются друг на друга связью один ко многим по разным столбцам.
5b586cce44a7d053879115.png

С какой бы я таблицы не начинал заполнение, ругается на "The INSERT statement conflicted with the FOREIGN KEY constraint...". Каждая таблица требует для заполнения данные, на которые можно сослаться в другой таблице. Как быть в этой ситуации? Прошу строго не судить, теории очень не хватает, приходится учиться практически на продакшине.
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
@x_shader
Oracle & Coffee
В общем случае, если поле FOREIGN KEY первой таблицы позволяет вставлять NULL - вставляйте записи с нулами в этом поле.
Потом заполняйте вторую таблицу.
Позже (когда уже будут записи во второй таблице, чтоб на них ссылаться) можно будет делать UPDATE нуловых значений первой таблицы.

Ну или можно отключить временно CONSTRAINTы:
--отключить:
ALTER TABLE tableName NOCHECK CONSTRAINT ALL

-- Включить обратно:
ALTER TABLE tableName WITH CHECK CHECK CONSTRAINT ALL


Даже не знаю, что из этого хуже на production.

UPD: Лучше отключать конкретный CONSTRAINT:
ALTER TABLE Purchasing.PurchaseOrderHeader  
NOCHECK CONSTRAINT CK_PurchaseOrderHeader_Freight;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы