删除后同步两个数据库表中的数据

时间:2013-01-31 11:45:40

标签: sql ms-access

这是我的学校项目。我对eForum部分感到非常兴奋。我试图删除用户,删除的用户的所有线程和回复也将被删除。

    public boolean deleteUser() {
    boolean success = false;
    DBController db = new DBController();
    db.setUp("IT Innovation Project");
    String sql = "DELETE FROM forumUsers where users_id = " + userID + "";
    if (db.updateRequest(sql) == 1)
        success = true;
    db.terminate();
    return success;
}

此方法检索表的第一列的值并将其存储为userID。然后,它将执行delete sql语句删除某个用户。

    public boolean deleteThread() {
    boolean success = false;
    DBController db = new DBController();
    db.setUp("IT Innovation Project");
    String sql = "DELETE FROM forumTopics where topic_id = " + threadID
            + "";
    if (db.updateRequest(sql) == 1)
        success = true;
    db.terminate();
    return success;
}

对于这个方法,它将获取显示所有线程的另一个表的第一列的值,并执行delete sql语句。

然而,在我删除了一些用户之后,被删除用户的线程和回复仍然存储在数据库中。我目前在数据库中使用一个用户表和一个线程表。有没有办法喜欢所谓的'同步'两个表?它是内部联接吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这似乎是使用Cascade Delete(http://support.microsoft.com/kb/304466)建立关系的完美案例

  

级联更新和删除

     

对于实施参照完整性的关系,您可以   指定是否要Microsoft Access自动级联   更新或级联删除相关记录。如果您设置这些选项,   删除和更新通常会被阻止的操作   允许引用完整性规则。删除记录或时   更改Microsoft Access中的主表中的主键值   对相关表进行必要的更改以保留引用   完整性。

但请注意,应谨慎使用Cascade Delete。这些帖子引用了SQL Server,但这些想法适用于任何数据库:

在大多数情况下,我不会先删除记录,我会在以后删除它们以便删除,人们改变主意的频率非常值得注意。

cascade delete