【问题标题】:Update/Delete in Spring mvc with JdbcTemplate with mysql database?使用带有 mysql 数据库的 JdbcTemplate 在 Spring mvc 中更新/删除?
【发布时间】:2018-03-25 12:35:18
【问题描述】:

我在 Spring MVC 中对两个表执行 CRUD。我的两个表 employeedetail [master table] 和 login[child table] 以employeeid 作为外键。当我运行我的查询时

查询1。

DELETE e.* ,l.* FROM  employeedetail e JOIN login l ON l.employeeid=e.employeeid WHERE l.employeeid=10;

错误:

错误代码:1451。无法删除或更新父行:外键 约束失败(springmvcmaven.login, CONSTRAINT employee_login_id_fk 外键 (employeeid) 参考 employeedetail (employeeid) ON DELETE NO ACTION ON UPDATE NO 行动)

查询 2:

 DELETE e.* ,l.* FROM  employeedetail e JOIN login l ON l.employeeid=e.employeeid WHERE employeeid=10;

错误:

错误代码:1052。where 子句中的列 'employeeid' 不明确

可以帮我解决这个问题吗?

【问题讨论】:

  • WHERE employeeid=10; 必须是 WHERE l.employeeid=10;WHERE e.employeeid=10;
  • 我两种方法都做了,但你可以看到上面的外键约束错误
  • 在删除父表之前删除子表中的所有记录

标签: mysql spring model-view-controller jdbctemplate


【解决方案1】:

解决方案 1:-

在外键约束中,可以声明为ON DELETE CASCADE。这样当主表中的记录被删除时,子表中的所有记录都会被自动删除。

Refer delete on cascade

解决方案 2:-

先删除子表记录即login

删除主表记录即employeedetail

DELETE FROM  login l WHERE l.employeeid=10;
DELETE FROM  employeedetail e WHERE e.employeeid=10;

【讨论】:

  • 但问题是我正在使用 Spring MVC 并且我正在从 JdbcTemplate.update(sql,obj); 中删除那么问题来了,如何管理这两个查询?
  • 你在更新方法中使用了什么 sql 查询?你能证明吗?这和你在 OP 中提到的一样吗?如果您使用 jdbc 模板更新方法使用 sql 查询,您可以使用我在解决方案中提到的两个不同的删除语句执行两次更新方法。
  • 是的,和我上面提到的一样,你能给我举个例子吗,我尝试了所有可能的解决方案,但从早上开始就找到了 This my delete public int deleteData(int employeeid){ String sql= "DELETE e.*,l.* FROM employeedetail e INNER JOIN login l ON e.employeeid=l.employeeid WHERE l.employeeid=?"; return Template.update(sql,new Object[]{employeeid}); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 2011-11-29
  • 2018-09-09
  • 2016-12-05
  • 2013-08-04
  • 1970-01-01
相关资源
最近更新 更多