使用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 , CONSTRAINT employee_login_id_fk FOREIGN KEY (employeeid) REFERENCES employeedetail (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

可以帮助我这个。

+0

'WHERE雇员= 10;'必须是'WHERE l.employeeid = 10;'或'WHERE e。 employeeid = 10;' – Jens

+0

我这样做了,但你可以看到上面的外键约束的错误 –

+0

在删除父项之前删除子表中的所有记录 – Jens

解决方案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; 
+0

但问题是我正在使用Spring MVC,我从删除JdbcTemplate.update(SQL,OBJ);那么这里是这个问题,如何管理这两个查询? –

+0

你在更新方法中使用了什么sql查询?你能证明吗?是否与您在OP中提到的相同?如果您正在使用jdbc模板更新方法使用sql查询,则可以使用两种不同的删除语句执行两次更新方法,如我在解决方案中所述。 – notionquest

+0

是的,它是相同的,我已经提到上述,你可以请提供我的例子,我试过每一个可能的解决方案,但可以找到自从早上这个我删除 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} –