0

我已将数据库中的约束命名为“FK_ChildParent”。当我有一个由管理员试图删除有孩子的行引起的外键错误时,我会收到这样的消息:

exceptionMessage=The DELETE statement conflicted with the REFERENCE constraint "FK_ContentSubject". The conflict occurred in database "xx", table "dbo.Content", column 'SubjectId'.
The statement has been terminated.

有没有一种简单的方法可以将此消息转换为以下内容:

"Delete failed: Row has Content"

我真的很想找到一个单一的解决方案,但我不确定这是否可能。

4

1 回答 1

0

当你得到这样的 MySQL 约束错误时,这意味着你的代码有问题。您的代码正在尝试做不应该做的事情。你试图依靠 MySQL 来告诉你你的代码做错了什么,但 MySQL 不知道,因为它只知道表、字段和约束。

如果您想要的错误消息类似于:“无法删除文件夹,文件夹中仍有文件”;IE。您要删除的记录存在 fk。您将无法通过一些巧妙的字符串替换来获得它,特别是如果错误消息变得更加复杂或者您可能每个请求有多个查询。

您必须自己检查外键约束,因为它与一些隐式 业务规则相关联;IE。如果文件夹中有文件,则无法删除。测试业务规则,如果失败,您将确切知道哪里出了问题。

MySQL 级别的约束只是帮助您确保您的数据具有某种一致性,但不要依赖它。

于 2013-10-28T10:30:54.560 回答