使用mysql数据库的JdbcTemplate在Spring mvc中更新/删除?
我在两个表上的Spring MVC中执行CRUD。我的两个表employeedetail [主表]和employeeid作为外键登录[子表]。当我跑步时我的查询使用mysql数据库的JdbcTemplate在Spring mvc中更新/删除?
查询1.
DELETE e.* ,l.* FROM employeedetail e JOIN login l ON l.employeeid=e.employeeid WHERE l.employeeid=10;
错误:
Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (
springmvcmaven
.login
, CONSTRAINTemployee_login_id_fk
FOREIGN KEY (employeeid
) REFERENCESemployeedetail
(employeeid
) ON DELETE NO ACTION ON UPDATE NO ACTION)
查询2:
DELETE e.* ,l.* FROM employeedetail e JOIN login l ON l.employeeid=e.employeeid WHERE employeeid=10;
错误:
Error Code: 1052. Column 'employeeid' in where clause is ambiguous
可以帮助我这个。
解决方案1: -
外键约束,你可以声明为ON DELETE 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查询,则可以使用两种不同的删除语句执行两次更新方法,如我在解决方案中所述。 – notionquest
是的,它是相同的,我已经提到上述,你可以请提供我的例子,我试过每一个可能的解决方案,但可以找到自从早上这个我删除 public int deleteData(int employeeid){ \t \t String sql =“DELETE e 。*,l。* FROM employeedetail e INNER JOIN登录l ON e.employeeid = l.employeeid WHERE l.employeeid =?“; \t \t \t \t return Template.update(sql,new Object [] {employeeid}); \t} –
'WHERE雇员= 10;'必须是'WHERE l.employeeid = 10;'或'WHERE e。 employeeid = 10;' – Jens
我这样做了,但你可以看到上面的外键约束的错误 –
在删除父项之前删除子表中的所有记录 – Jens