gpt4 book ai didi

mysql - 在执行SQL查询之前如何检查是否会触发外键违规?

转载 作者:行者123 更新时间:2023-11-29 08:33:47 25 4
gpt4 key购买 nike

在执行 SQL 查询之前,我想检查是否会违反外键约束。这可能吗?

最佳答案

您可以使用 SELECT 语句检查外键是否存在。要以完全透明的方式做到这一点,您需要编写代码来检查系统表或 information_schema View ,动态构建正确的 SELECT 语句,然后执行它并检查结果。您可以对大部分内容进行硬编码,但前提是要冒执行基于不再存在的假设的代码的风险。 (FK 可能会被删除、表被重命名等)

但这两种方法都存在一些问题。

  • 您必须将 SELECT 语句(或多个语句)和 INSERT 或 UPDATE 语句放入单个事务中。否则,您将面临验证其他人在您更新之前删除的值是否存在的风险。换句话说,您的 SELECT 成功,其他人的 DELETE(或 UPDATE)成功,您的 INSERT(或 UPDATE)应该成功,但由于事务处理不当而失败。
  • 服务器必须为每个 INSERT 或 UPDATE 语句处理两个查询。 (这不包括针对系统表的查询。)
  • 无论如何,您仍然必须在应用程序级别捕获错误。有很多事情可以阻止合理的事务提交。

由于无论如何都必须捕获错误,因此仅发出 INSERT 或 UPDATE 语句并捕获表示您违反了外键约束的错误通常更有意义。

关于mysql - 在执行SQL查询之前如何检查是否会触发外键违规?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15792172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com