5

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

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

4

4 回答 4

3

看起来 sql server 不允许这样做,但你不是唯一一个想要它的人。它是 SQL 92 标准的一部分,所以他们已经有 17 年的时间来弄清楚它。再说一次,MySQL 也不支持它(尽管 Oracle 支持)。

重新排序语句可能是您最好的选择。

于 2009-08-25T18:21:44.933 回答
2

您最好确定正确的顺序,以便交易可以在适当的时间失败。这应该是一次性的决定。

于 2009-08-25T18:17:44.863 回答
2

SQL Server 没有此功能。

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

于 2009-08-25T18:21:08.740 回答
2

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

于 2009-08-25T18:29:00.537 回答