【问题标题】:Get the specific column involved in a FK Exception获取 FK Exception 中涉及的特定列
【发布时间】:2015-09-26 21:00:57
【问题描述】:

我在尝试删除表中的特定记录时遇到了以下消息错误 (DataIntegrityViolationException):

Cannot delete or update a parent row: a foreign key constraint fails (company.table_parent, CONSTRAINT table_parent_ibfk_1 FOREIGN KEY (id_son) REFERENCES layout (id))

我已经知道原因:我正在尝试删除一条记录,但是它正在其他表中使用。

我想知道是否存在包含事务尝试涉及的表和列的属性,以便我可以正确处理异常而不检查错误消息内容。

【问题讨论】:

  • 答案在您发布的错误消息中。您想在删除尝试之前知道吗?

标签: java mysql spring exception foreign-keys


【解决方案1】:

我不知道这个调用是否包含在外包装事务中。在我看来,你可以:

(A) 进行调用并解析错误消息。你会知道违规的表/列。

(B) 在更新/删除调用之前查询 FK 表(父或子)中是否存在疑似后续违规的列。

另一种看待 B 的方式是,您可能正在对父表执行此操作,并且它是一个子表,它正在吠叫说您将要孤立我

【讨论】:

  • 我敢打赌,第二种方法对我来说是唯一的解决方案。是我在代码中实际使用的。但我希望我可以直接从异常中推断出具体原因,而无需之前的检查。无论如何,谢谢。
  • 那么错误字符串会告诉您并且可以通过代码进行解析和操作(无论您可能以自动方式执行什么操作)
猜你喜欢
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多