sql:我如何执行两个dependents查询?

时间:2012-04-09 20:10:26

标签: java sql

我有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()

这不起作用,我在考虑使用autocommit来假两个查询一起执行但是不是,第二个查询没有删除任何行,我该怎么做?

一个重要的注意事项,并非table1中的所有行都在table2中有一个引用的行。

由于

2 个答案:

答案 0 :(得分:1)

您可以随时查询要删除的数据,然后再将其删除:

1)Select ID from table1 where <criteria>

2)Select ID from table2 where <criteria>

3)Delete from table1 where ID in <results from (1)>

4)Delete from table2 where ID in <results from (2)>

答案 1 :(得分:0)

如果你 “必须从table1中删除所有符合确定标准的行” 我认为字符串查询2必须是

 String query2 = "delete from table1 where someparameter = ?"