Synchronisieren Sie data in zwei databasetabellen beim Löschen

Das ist mein Schulprojekt. Ich bin in der Menge des eForum Teils. Ich habe versucht, einen Benutzer zu löschen, und alle Threads und Antworten des gelöschten Benutzers werden ebenfalls gelöscht.

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

Diese Methode ruft den Wert der ersten Spalte der Tabelle ab und speichert sie als Benutzer-ID. Dann wird die statement delete sql ausgeführt, um bestimmte Benutzer zu löschen.

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

Für diese Methode wird der Wert der ersten Spalte einer anderen Tabelle verwendet, die alle Threads anzeigt und die statement delete sql ausführt.

Nachdem ich jedoch einige Benutzer gelöscht habe, werden die Threads und Antworten des gelöschten Benutzers weiterhin in der database gespeichert. Ich verwende derzeit eine Benutzertabelle und eine Thread-Tabelle in der database. Gibt es eine Möglichkeit, so genannte "synchronisieren" beide Tabelle zu mögen? Ist es die innere Verbindung?

Danke im Voraus.

Dies scheint ein perfekter Fall für die Einrichtung Ihrer Beziehungen mit Cascade Delete ( http://support.microsoft.com/kb/304466 )

Aktualisierungen kaskadieren und löschen

Bei Beziehungen, in denen die referenzielle Integrität erzwungen wird, können Sie angeben, ob Microsoft Access automatisch verknüpfte datasätze aktualisieren oder kaskadieren soll. Wenn Sie diese Optionen festlegen, sind Lösch- und Aktualisierungsvorgänge zulässig, die normalerweise durch referenzielle Integritätsregeln verhindert werden. Wenn Sie datasätze löschen oder Primärschlüsselwerte in einer primären Tabelle ändern, nimmt Microsoft Access die erforderlichen Änderungen an verwandten Tabellen vor, um die referenzielle Integrität beizubehalten.

Beachten Sie jedoch, dass Cascade Delete mit großer Sorgfalt verwendet werden sollte. Diese Posts beziehen sich auf SQL server, aber die Ideen gelten für jede database:

  • Wann / Warum Cascading in SQL server verwenden?
  • Sollte ich die CASCADE DELETE-Regel verwenden?

Meistens lösche ich datasätze nicht zuerst, zähle sie zur Löschung zu einem späteren timepunkt mit timestempel, es ist bemerkenswert, wie oft Leute ihre Meinung ändern.

kaskadiertes Löschen