我有一个与使用外键约束的数据库一起使用的应用程序。
例如,我们有一个清单表,它有一个引用名为 case_names 的表的外键约束。如果用户尝试删除具有引用其 ID 的任何库存项目的案例名称,则该操作将受到限制。
如何向用户显示他们会理解的消息?“你不能删除这个箱子,因为它仍然包含库存物品。”
我的想法是尝试捕获(捕获不同的错误类型?),但我真的不想将它用于可能预期的事情。
该应用程序在 VB.Net 中使用 MySQL.data
我有一个与使用外键约束的数据库一起使用的应用程序。
例如,我们有一个清单表,它有一个引用名为 case_names 的表的外键约束。如果用户尝试删除具有引用其 ID 的任何库存项目的案例名称,则该操作将受到限制。
如何向用户显示他们会理解的消息?“你不能删除这个箱子,因为它仍然包含库存物品。”
我的想法是尝试捕获(捕获不同的错误类型?),但我真的不想将它用于可能预期的事情。
该应用程序在 VB.Net 中使用 MySQL.data
我不会使用异常来处理用户错误或正常的程序流程。只需检查用户是否可以删除记录(可能使用存储过程),如果不能向她显示警报消息。
我认为例外是您无法预见的错误。
编辑以澄清:
存储过程(或程序中的代码)可以检查所有涉及的表,甚至可以检查COUNT()
删除请求会影响多少记录。通过计数,您还有一个额外的好处是告诉用户有多少库存项目与案例相关,在您的示例中:
“你不能删除这个案例,因为它仍然包含 32 个库存项目。”
编辑以澄清更多:
当然,这并不是说不应该在数据库中正确设置引用完整性。如果您忘记了一些检查,您仍然拥有适合您的数据库(并且用户会打电话给您以了解程序到底在说什么:))。