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 = ?";
我明白,我必须使用外键从两者中删除,但我不知道怎么办。
我不认为你可以使用单个查询从多个表中删除,你可能需要使用多个删除查询并将其包含在一个事务中。 – 2013-03-18 01:39:25
@Aias - 我不认为这些问题是相同的。 Mine是Java PreparedStatement,不是SQL查询/命令。 – 2013-03-18 01:41:30
@PradeepSimha - 我已经这样做了,但并不喜欢它,认为可能有更好的解决方案。 – 2013-03-18 01:42:03