Cannot delete or update a parent row: a foreign key constraint fails解决方法

我在使用delete from table语句清空一个表数据时,报错 Cannot delete or update a parent row: a foreign key constraint fails。

先把我的数据库贴出来。

tb_device表

Cannot delete or update a parent row: a foreign key constraint fails解决方法_第1张图片

Cannot delete or update a parent row: a foreign key constraint fails解决方法_第2张图片

Cannot delete or update a parent row: a foreign key constraint fails解决方法_第3张图片


tb_device_status_now表

Cannot delete or update a parent row: a foreign key constraint fails解决方法_第4张图片

Cannot delete or update a parent row: a foreign key constraint fails解决方法_第5张图片

正题:


最开始我直接清空tb_device,报错。看数据库发现tb_device_status_now中的字段与其外键关联所以不能清空。所以改为先清空tb_device_status_now表,再清空tb_device。结果发现还是报错!再看数据库,发现tb_device表中dev_master字段与dev_id字段也是外键关联。。。。

所以要先清空dev_master字段,才能清空tb_device整张表。

清空某字段数据的sql语句:update table set column=null


最后我的删除顺序:




//先清空tb_device_status_now表中旧数据 String sqldel = "delete from tb_device_status_now";jdbcTemplate.execute(sqldel); //再清空tb_device表中旧数据;其中先清空dev_master字段,外键关联dev_id,否则删不掉表报错 String sqldel1 = "update tb_device set dev_master = null"; jdbcTemplate.execute(sqldel1); String sqldel2 = "delete from tb_device";jdbcTemplate.execute(sqldel2);

你可能感兴趣的:(数据库)