SQL

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

发布于 2021-03-12 10:30:22

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

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

提前致谢。

关注者
0
被浏览
66
1 个回答
  • 面试哥
    面试哥 2021-03-12
    为面试而生,有面试问题,就找面试哥。

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

    级联更新和删除

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

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

    级联删除



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看