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

Joh*_*iou 1 java sql derby

我希望能够从2个表中删除所有数据,其中user的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");
Run Code Online (Sandbox Code Playgroud)

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

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

String stmt2 = "DELETE FROM APP.PERSON, APP.DATAVAULT WHERE PID = ?";
Run Code Online (Sandbox Code Playgroud)

String stmt2 = "DELETE FROM APP.PERSON AND APP.DATAVAULT WHERE PID = ?";
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*umb 5

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

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