3

这是我的学校项目。我负责电子论坛部分。我试图删除一个用户,被删除用户的所有主题和回复也将被删除。

    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;
}

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

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

提前致谢。

4

1 回答 1

0

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

级联更新和删除

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

但是请注意,应非常小心地使用级联删除。这些帖子指的是 SQL Server,但这些想法适用于任何数据库:

在大多数情况下,我不会先删除记录,我会为它们添加时间戳以供日后删除,人们改变主意的频率非常惊人。

级联删除

于 2013-01-31T12:54:01.900 回答