Code zum Aktualisieren der TabellendefinitionenÄußerlich hat sich am Installer nichts getan, aber heute hat er sein Herzstück erhalten: Den Code, welcher die bestehenden Tabellen weitgehend verlustlos aktualisieren kann. Bei Bedarf ändert setup.php jetzt Spalten- und Index-Definitionen (auch Fremdschlüssel) oder fügt sie ein, oder legt neue Tabellen an. Bestehende Spalten werden keinesfalls gelöscht, auch wenn sie in der neune Tabellendefinition nicht vorkommen. Lokale Änderungen an der Tabellenstruktur bleiben somit erhalten, solange sie nicht mit neuen Spalten/Indices kollidieren. Datenverluste könnten theoretisch auch dann auftreten, wenn sich der Typ einer Spalte ändert, z.B. von 'text' auf 'varchar(255)' oder so ähnlich. Besonders knifflig ist der hier gezeigte Algorithmus für FOREIGN KEY-Definitionen, weil zwischen Tabellennamen auf dem lokalen System und den "abstrakten" Tabellennamen unterschieden werden muss. Die Hälfte der Arbeit war zum Glück schon seit längerem getan, nämlich das Zerlegen von "CREATE TABLE"-Statements.
|