【问题标题】:deferred constraint checking延迟约束检查
【发布时间】:2010-11-03 03:39:30
【问题描述】:

目前在我们的数据库设计中,我们有两个实体之间的循环引用。换句话说,我们在每个表中都有引用彼此主键的外键。为了在这些表中插入记录,我们需要执行延迟约束检查。这在 SQL Server 2008 中可行吗?我知道 Oracle DDL 对此有特殊的语法。

【问题讨论】:

标签: sql-server constraints


【解决方案1】:

在 SQL Server 中没有本地方法来执行延迟约束检查。

您的最佳选择可能是在第一个表的外键列中插入一个 NULL 值,直到插入第二条记录,然后作为同一事务的一部分,更新第一个表中的外键列。

我很感兴趣 - 您的循环引用的商业原因是什么?这绝对是一个非凡的要求。

还可以查看this thread,关于同一主题。

【讨论】:

  • @Aaron。我们在同一产品的同义词之间有一个递归引用。
  • @Igor:那么您可能想要的是将产品名称存储在单独的表中,产品信息和产品名称之间存在一对多的关系。但是,如果您想要交换或重新排序唯一键(例如 "Ordering" 列),延迟约束检查将非常有用。
猜你喜欢
  • 2013-04-25
  • 2020-04-19
  • 2014-03-05
  • 2023-03-20
  • 1970-01-01
  • 2010-11-03
  • 2014-10-30
  • 2013-05-15
  • 2012-04-28
相关资源
最近更新 更多