Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

FB 1.5: Datensätze bedingt löschen

  Alt 8. Mai 2006, 17:49
Datenbank: Firebird • Version: 1.5 • Zugriff über: ZEOS
Ich habe eine Tabelle mit u.A. zwei INT-Feldern. Eines ist der Primärschlüssel ("ID"), das andere ein Sekundärschlüssel ("PARENT_ID"). Das Ganze bildet eine hierarchische Struktur. Das Feld PARENT_ID eines Datensatzes verweist auf das Feld ID eines anderen Datensatzes in der selben Tabelle. Wenn ein Datensatz gelöscht wird (DELETE FROM TABLE WHERE ID=foo) dann sollen alle weiteren Datensätze gelöscht werden, deren Feld PARENT_ID auf einen Datensatz verweist der nicht mehr existiert. Ich habe mir folgendes gedacht, was aber leider nicht funktioniert:

DELETE FROM TABLE T1 WHERE (SELECT COUNT(*) FROM TABLE T2 WHERE T2.ID=T1.PARENT_ID)=0;

Mit dieser Query werden alle Datensätze gelöscht. Das ist natürlich etwas ungünstig
  Mit Zitat antworten Zitat