是否可以将参照完整性检查推迟到SQL Server中的事务结束?

时间:2009-08-25 18:15:56

标签: sql-server transactions referential-integrity

我最近在Fowler的PofEA中读到,一些数据库引擎允许您将RI检查推迟到事务结束。这在SQL Server中是否可行?

问题出现在某些情况下我试图保存包含插入和删除的更改,确定执行操作以避免RI失败的正确顺序可能很棘手。我知道在交易结束时RI会很好,所以推迟这些检查似乎是理想的。

4 个答案:

答案 0 :(得分:3)

看起来sql server不允许这样做,但你aren't the only one想要它。它是SQL 92标准的一部分,所以他们已经有17年了解它。然后,MySQL也不支持它(尽管Oracle确实如此)。

重新排序这些陈述可能是您的最佳选择。

答案 1 :(得分:2)

最好确定正确的订单,以便交易在适当的时候失败。这应该是一次性的决定。

答案 2 :(得分:2)

SQL Server没有此功能。

我是否谦卑地建议,如果确定正确的插入顺序(或者没有正确的插入顺序)是棘手的,那么您的数据库设计可能需要重构或至少要仔细检查。

答案 3 :(得分:2)

如果您使用的是SQL Server 2008,则可以使用MERGE将插入/删除组合到单个RI安全事务中...