【问题标题】:SQL Server: Insert into two tables at the same time with FK to each otherSQL Server:同时插入到两个表中,相互之间有FK
【发布时间】:2020-10-19 14:44:17
【问题描述】:

我需要在 2 个表上进行插入,其中两个表都有一个外键(不可为空) 不幸的是,使用事务不起作用。还有其他方法吗?

【问题讨论】:

  • 那么表A对表B有外键,B对A有外键?听起来像是一个奇怪的设计选择......
  • 正确。除了奇怪的设计,你知道这是否可以做到吗? :)

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


【解决方案1】:

不幸的是,使用事务不起作用。还有其他方法吗?

在 SQL Server 中执行此操作的唯一方法是在插入数据时将表更改为 NOCHECK 约束之一(或使用可以绕过约束检查的批量插入或复制)。显然,这不是你想在运行时做的事情。

典型的解决方案是允许其中一个 FK 可以为空。

【讨论】:

  • 我在更改之前使用了一个事务到 NOCHECK,然后再次检查。我同意这不应该在运行时完成。 (对我来说,这是一个例外情况,只会在创建数据库时完成一次)。谢谢!
  • 酷。在部署时运行 DDL 没有问题。
猜你喜欢
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 2012-11-02
  • 2015-04-06
  • 1970-01-01
相关资源
最近更新 更多