我有 2 个表(table1,table2)table1 有一个字段 id,table2 有一个字段 id_eid,它引用 table1 的 id 字段作为外键。
我必须从 table1 中删除与确定标准匹配的所有行,然后如果在 table2 中引用了这些数据,则也从中删除数据。
我做了类似的事情,假设con
是 Connection 对象并且 autocommit 设置为 false 。
String query1 = "delete from table2 where exists
(select * from table1 where someparameter = ? and table1.id = table2.id_eid)"
然后我使用 PreparedStatement 执行第一个 query1。
然后我有
String query2 = "delete from table1 where someparameter = ?
and exists (select * from table2 where table1.id = table2.id_eid)"
我用另一个 PreparedStatment 执行了这个。
最后我有con.commit()
。
这不起作用,我想使用自动提交来假这两个查询是一起执行的,但事实并非如此,第二个查询不删除任何行,我该怎么做?
重要说明,并非 table1 中的所有行在 table2 中都有引用行。
谢谢