mysql - jsp删除记录失败显示错误信息

标签 mysql jsp servlets

我正在开发基于 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/

相关文章:

java - 我如何获取 xml 文件作为 jsp 的响应

jsp - 用tomcat保护jsp Action 页面

mysql - 为什么会自动为外键字段创建索引?

mysql - MySQL中的表名是否区分大小写?

mysql - 在删除级联时使用外键删除多个条目

mysql - 使用tomcat+JSP+JDBC删除MySQL列时eclipse错误 “com.mysql.jdbc.exceptions.MySQLSyntaxErrorException”

javascript - 使用 jquery 将 javascript 对象传递到 jsp 页面

java - 在 sling servlet 中传递一组对象

java - 此代码未提交表单?为什么

java - Servlet 未调用