Mailinglisten-Archive |
Hallo Liste, Mein Problem: Ich migriere eine bestehende Anwendung nach mySQL und stosse an die Grenzen der ANSI SQL Unterstützung. Ich habe 2 Tabellen a und b create table a ( name char(50) ); create table b ( aname char(50), id int ); Diese sind miteinander verknüpft: aname ist ForeignKey in b zu a Meine Anwendung ist eigentlich so ausgelegt, dass diese Tabellen via constrains miteinander verknüpft sind. Unter DB2 oder Oracle funktioniert folgendes prima: Beim Löschen eines Datensatze aus a werden die abhängigen Datensätze aus b mitgelöscht, da ich ON DELETE CASCADE als Aktion definiert hatte. Da mySQL keine referentiellen Aktionen unterstützt, muss ich einen Job schreiben, der alle Datensätze aus b löscht, für die kein entsprechender Datensatz in a mehr vorhanden ist. Da ich die Anwendung nicht ändern will und darf (sie tut ja ...), soll dieser Job nebenläufig, z.B. zeitgesteuert laufen. Eigentlich würde ich jetzt statements benutzen wie delete from b where aname not in (select name from a) Aber mySQL unterstützt (meines Wissens, oder irre ich mich ? ) keine subselects. Hat jemand eine Idee, wie das ganze performant gelöst werden kann? Oder geht wirklich nur der langsame Weg im Programm: Schleife über alle Records von b: Für jeden Record per Select prüfen, ob in a vorhanden Wenn Nein: Einzeln löschen next record Hat jemand eine Idee ??? Ich bin dankbar für jede Anregung. Rüdiger --- !!NEU!! Fragen und Antworten zu MySQL und dieser Liste unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive