一尘不染

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

sql

这是我的学校项目。我很喜欢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语句。

但是,删除一些用户后,被删除用户的线程和回复仍存储在数据库中。我目前在数据库中使用一个用户表和一个线程表。有什么办法喜欢所谓的“同步”两个表吗?是内部联接吗?

提前致谢。


阅读 174

收藏
2021-03-08

共1个答案

一尘不染

对于使用CascadeDelete(http://support.microsoft.com/kb/304466)建立关系,这似乎是一个完美的案例。

级联更新和删除

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

在大多数情况下,我不会先删除记录,而是为删除记录打上时间戳,以备日后删除,这是人们改变思想的频率非常可观的。

级联删除

2021-03-08