我最近在Fowler的PofEA中读到,一些数据库引擎允许您将RI检查推迟到事务结束。这在SQL Server中是否可行?
问题出现在某些情况下我试图保存包含插入和删除的更改,确定执行操作以避免RI失败的正确顺序可能很棘手。我知道在交易结束时RI会很好,所以推迟这些检查似乎是理想的。
答案 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安全事务中...