2013-03-18 65 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 ......只是沒有德比。