这是我的学校项目。我很喜欢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语句。
但是,删除一些用户后,被删除用户的线程和回复仍存储在数据库中。我目前在数据库中使用一个用户表和一个线程表。有什么办法喜欢所谓的“同步”两个表吗?是内部联接吗?
提前致谢。
对于使用CascadeDelete(http://support.microsoft.com/kb/304466)建立关系,这似乎是一个完美的案例。
级联更新和删除 对于强制实施引用完整性的关系,您可以指定是否要Microsoft Access自动级联更新或级联删除相关记录。如果设置这些选项,则允许删除和更新操作,这些操作通常会被引用完整性规则阻止。当您删除记录或更改主表中的主键值时,Microsoft Access会对相关表进行必要的更改以保留引用完整性。
级联更新和删除
对于强制实施引用完整性的关系,您可以指定是否要Microsoft Access自动级联更新或级联删除相关记录。如果设置这些选项,则允许删除和更新操作,这些操作通常会被引用完整性规则阻止。当您删除记录或更改主表中的主键值时,Microsoft Access会对相关表进行必要的更改以保留引用完整性。
在大多数情况下,我不会先删除记录,而是为删除记录打上时间戳,以备日后删除,这是人们改变思想的频率非常可观的。