Я хочу пакетно вставить большое количество сгенерированных данных, которые имеют циклическую зависимость (столбец в каждой таблице является внешним ключом, ограниченным другой таблицей). Чтобы обойти это, я хочу просто отключить ограничения внешнего ключа, вставить данные, а затем снова включить ограничения.
Погуглив, я нашел кучу решений, но ни одно из них не сработало. Прямо сейчас у меня есть:
ALTER TABLE TableName NOCHECK CONSTRAINT ALL
Команда выполняется и не выдает никаких ошибок, но когда я пытаюсь очистить таблицу при подготовке к вставке данных, я получаю следующую ошибку:
System.Data:0:in `OnError': The DELETE statement conflicted with the REFERENCE constraint "FK_1_2_ConstraintName". The conflict occurred in database "DatabaseName", table "dbo.SomeOtherTable", column 'PrimaryKey'.\r\nThe statement has been terminated.\r\nChecking identity information: current identity value '0', current column value '0'.\r\nDBCC execution completed. If DBCC printed error messages, contact your system administrator. (System::Data::SqlClient::SqlException)
Моя текущая теория заключается в том, что это вызвано ограничением внешнего ключа для другой таблицы, которое зависит от изменяемой таблицы.
Существует два решения этой проблемы:
Просмотрите все таблицы с зависимостями от таблицы, в которую я вставляю, и отключите их ограничения внешнего ключа. Это кажется излишне сложным.
Отключить ограничения внешнего ключа для всех таблиц в базе данных.
Любое решение будет работать, но я не уверен, с чего начать. Есть идеи?