为什么在SQL Server中启用时不应该违反外键?
我们有两个表,Order Header
和Order Detail
。
Order header
表的OrderID
列引用OrderDetail
表的OrderID
列。
然后我将使用生产数据库中的一些数据迁移到这些表。 我只是禁用这些表外键约束并从生产Db中插入数据。
在插入数据后,订单明细表的OrderID
列包含值101,102,103
,但订单表头的Order ID
列仅包含值100
。
然后我尝试使用以下t-sql代码启用外键约束
exec sp_msforeachtable "ALTER TABLE ? CHECK CONSTRAINT ALL"
为什么在启用时不应该使用现有数据违反外键?
答案 0 :(得分:3)
从多个与FKey连接的表中移动数据时,您应该:
启用FKey约束时 - 默认情况下检查数据一致性