创建外键而不检查现有数据

时间:2010-08-11 18:42:04

标签: sql sql-server-2000 foreign-keys

这是一个2部分问题。

问题1:我正在尝试在桌面上创建一个外键,我需要关闭“检查创建或重新启用时的现有数据”。我知道这是一个可视化的选项,但我正在寻找一种以编程方式进行的方法。反正有吗?

问题2:我有一个代码表和两个需要引用该代码表的表A和B.我希望从关系表中引用这些,但我希望能够使用相同的列。我可以将2个外键指向同一列吗?

1 个答案:

答案 0 :(得分:10)

是的,您可以在父表中使用相同的列引用多个表中的不同列。

我不建议在创建时关闭检查FK。如果您现在有错误数据,则需要立即修复。否则,当有人第一次编辑其中一条记录时,它将无法通过FK检查。

从网上书籍到为什么使用nocheck是个坏主意:

  

如果您不想验证新的CHECK   或FOREIGN KEY约束   现有数据,使用WITH NOCHECK。我们的确是   不建议这样做,除了   罕见的情况。新约束将是   在所有后续数据更新中进行评估   任何约束违规都是   由WITH NOCHECK抑制时   添加约束可能会导致未来   如果更新行,则更新失败   数据不符合   约束。