我正在开发基于 Web 的应用程序,如果用户认为不需要维护,我需要删除父条目。 如果父条目在子表中没有任何记录,那么条目将被删除,但如果它在子表中有记录,那么我想显示错误消息,其中条目存在于哪个表中。
我遵循使用 jsp 和 servlet 的 MVC 架构。
最佳答案
注意以下几点,如果你的表定义明确,子记录必须引用父记录(阅读外键)。然后,如果您尝试删除父记录,您有多种选择:
1- 您可以允许默认模式:如果不先删除子项就不能删除父项(我认为这就是您从描述中想要的)。
2-你可以在删除父记录时“说”mysql删除所有子记录。
有关这方面的更多信息,请阅读这篇文章:Foreign key constraints: When to use ON UPDATE and ON DELETE
假设您想要遵循第一个选项,当您想要删除父键时,可能会发生两件事。
1- 没有子记录,因此一切都按照您的预期进行。
2- 您有引用要删除的父记录的子记录。在这种情况下,mysql 不会删除父记录,并且会返回代码为 1217 的错误(无法删除或更新父行:外键约束失败)。然后你可以检测到错误。做你假装用它做的事,在本例中是向客户端显示错误消息。为了显示消息,这里是我在写这个答案之前发表的评论的副本:
Once detected, there are two options, to send the error to the jsp page. You can send it using the user session, or, when you are redirecting to the jsp page, you can send an attribute in the url like www.my-app./jsppage?error=1. Then the jsp page gets the attribute and display the proper error message.
关于mysql - jsp删除记录失败显示错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27982263/