1

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

我有两张桌子(对巨大的图像感到抱歉):

在此处输入图像描述

这是我到目前为止的声明:

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 = ?";

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

4

1 回答 1

5

不幸的是,根据文档,您不能在 Derby 中使用单个 SQL 查询删除多个表。

可以使用其他一些 RDBMS 包,例如MySQL ......只是没有 Derby。

于 2013-03-18T01:41:14.087 回答