代码之家  ›  专栏  ›  技术社区  ›  Darrel Miller

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

  •  5
  • Darrel Miller  · 技术社区  · 16 年前

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

    这个问题出现在一些场景中,我试图保存包括插入和删除在内的更改,要确定正确的顺序来执行操作以避免RI失败可能很困难。我知道在交易结束时,RI会很好,所以推迟这些支票似乎比较理想。

    4 回复  |  直到 16 年前
        1
  •  3
  •   Eric Petroelje    16 年前

    看起来SQL Server不允许这样做,但是您 aren't the only one 谁想要它。这是SQL 92标准的一部分,所以他们已经有17年的时间来解决这个问题。同样,MySQL也不支持它(尽管Oracle支持)。

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

        2
  •  2
  •   Adam Robinson    16 年前

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

        3
  •  2
  •   Cade Roux    16 年前

    SQL Server没有此功能。

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

        4
  •  2
  •   gbn    16 年前

    如果您在SQL Server 2008上,则可以使用 MERGE 要将插入/删除合并到单个RI安全事务中…

    推荐文章