从一个语句中的两个表中删除

时间:2013-03-18 01:34:36

标签: java sql derby

我希望能够从2个表中删除所有数据,其中user的id =给定的id。我使用的是Java,Derby DB,Netbeans 7.3 Beta 2和OS X Mountain Lion。

我有两张桌子(抱歉这张巨幅图片):

enter image description here

这是我到目前为止的陈述:

String stmt2 = "DELETE FROM APP.PERSON JOIN APP.DATAVAULT WHERE PID = ?";                    
PreparedStatement ps2 = Main.getPreparedStatement(stmt2);
ps2 = conn.prepareStatement(stmt2);
ps2.setInt(1, user.getId());
ps2.executeUpdate();
System.out.println("Deleted");

我不明白我是如何从APP.DATAVAULT以及APP.PERSON中删除的。正如您所看到的,APP.DATAVAULT中有一个外键,它是用户ID。

我尝试过很多东西,比如:

String stmt2 = "DELETE FROM APP.PERSON, APP.DATAVAULT WHERE PID = ?";

String stmt2 = "DELETE FROM APP.PERSON AND APP.DATAVAULT WHERE PID = ?";

据我所知,我必须使用外键从两者中删除,但我不知道如何。

1 个答案:

答案 0 :(得分:5)

不幸的是,根据the docs,您无法在Derby中使用单个SQL查询删除多个表。

可以使用其他一些RDBMS软件包,例如MySQL ......而不是Derby。