2013-03-18 74 views
1

我希望能够从2个表中删除用户的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 = ?"; 

我明白,我必须使用外键从两者中删除,但我不知道怎么办。

+0

我不认为你可以使用单个查询从多个表中删除,你可能需要使用多个删除查询并将其包含在一个事务中。 – 2013-03-18 01:39:25

+0

@Aias - 我不认为这些问题是相同的。 Mine是Java PreparedStatement,不是SQL查询/命令。 – 2013-03-18 01:41:30

+0

@PradeepSimha - 我已经这样做了,但并不喜欢它,认为可能有更好的解决方案。 – 2013-03-18 01:42:03

回答

5

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

可以与一些其他的RDBMS包,如MySQL ......只是没有德比。