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