2

Почему не следует нарушать внешний ключ при включении в SQL Server?Почему не следует нарушать внешний ключ при включении?

У нас есть две таблицы, Order Header и Order Detail.

Order header стол OrderID ссылки на колонку OrderDetail стол OrderID column.

Затем я перейду с некоторыми данными из производственной базы данных в эту таблицу. Я просто отключил это ограничение внешнего ключа таблицы и вставил данные из производственной Db.

После вставки данных, OrderID столбца детали заказа таблицы содержит значение 101,102,103, но Order ID столбца заголовка таблицы для того, содержит только значение 100.

Тогда я пытаюсь включить ограничение внешнего ключа с помощью следующего кода T-SQL

exec sp_msforeachtable "ALTER TABLE ? CHECK CONSTRAINT ALL" 

Почему не должен нарушать внешний ключ с существующими данными при одновременном обеспечении?

ответ

3

При переносе данных из нескольких таблиц, связанных с FKEY - вы должны:

  • или сохранить ключевые значения в обеих таблицах
  • или выдают новых значения меняющихся соответствующий столбец FKEY в ссылках таблицы при перемещении

Когда вы включаете ограничение FKey - оно по умолчанию проверяет согласованность данных