我正在开发基于Web的应用程序,如果用户认为不需要维护,我需要删除父条目。 如果父条目在子表中没有任何记录,则条目将被删除,但如果它在子表中有记录,那么我想显示错误消息,条目存在于哪个表中。
我正在使用jsp和servlet跟踪MVC架构。
答案 0 :(得分:0)
请注意以下内容,如果您的表定义良好,我的意思是,子记录必须引用父记录(阅读有关FOREIGN KEY的信息)。然后,如果您尝试删除父记录,则有很多选项:
1-您可以允许默认模式:您不能删除父项而不先删除子项(我认为这是您想要的描述)。
2-当你删除父母时,你可以“说”mysql删除所有子记录。
有关此内容的更多信息,请阅读以下文章:Foreign key constraints: When to use ON UPDATE and ON DELETE
假设您想要遵循第一个选项,当您想要删除父键时,可能会发生两件事。
1-没有儿童记录,因此一切都如你所愿。
2-您有引用要删除的父记录的子记录。在这种情况下,mysql不会删除父记录,并将返回代码为1217的错误(无法删除或更新父行:外键约束失败)。然后你可以检测到错误。做你假装用它做的事情,在这种情况下向客户提出错误信息。为了显示消息,这里是我在写这个答案之前发布的评论的副本:
一旦检测到,有两个选项,将错误发送到jsp 页。您可以使用用户会话发送它,或者,当您使用时 重定向到jsp页面,你可以在url中发送一个属性 www.my-app./jsppage?error=1。然后jsp页面获取属性和 显示正确的错误消息。