Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > foreign key мешают сделать insert


Автор: f999t1 13.6.2013, 06:32
Надо сделать инсерт из нескольких таблиц на одной бд  в другие таблицы на другой бд
Таблицы схожи по структуре.
Делаю обычный инсерт, но вылезает ошибка изза fk.
Как обойти этот момент?
Можно ли их отключить на момент инсерта, а потом обратно включить?

Автор: Akina 13.6.2013, 08:20
Цитата(f999t1 @  13.6.2013,  07:32 Найти цитируемый пост)
Как обойти этот момент?

Построить правильный порядок инсертов. Сначала копировать данные на стороне "один", и только потом - на стороне "много".

Цитата(f999t1 @  13.6.2013,  07:32 Найти цитируемый пост)
Можно ли их отключить на момент инсерта, а потом обратно включить? 

Отключить - можно. Включить обратно, когда у тебя есть нарушения FK - нельзя. Вернее, можно, но только после устранения несоответствий.

Автор: Zloxa 13.6.2013, 11:07
Цитата(Akina @  13.6.2013,  09:20 Найти цитируемый пост)
Построить правильный порядок инсертов

Добавлю, что некоторые платформы (Оракле-точно и ПГ - вроде как, возможно еще кто-то) поддерживают т.н. deferrable constraints - Ограничения целостности, которые проверяются при фиксации транзакции а не при модификации данных. Не знаю, умеет ли MS. По идее должен бы. Вещь нужная.

Цитата(f999t1 @  13.6.2013,  07:32 Найти цитируемый пост)
Можно ли их отключить на момент инсерта, а потом обратно включить? 

Отключить можно, если эта операция разова и выполняется в режиме ограничения подключений приложений - когда с базой работает только админ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)