Sollte diese Tabelle beim Erstellen einer neuen Tabelle auch in hook_schema()
einer hinzugefügt werden hook_update_N()
? Oder gibt es einen Trick oder etwas, das ich verpasst habe, damit Datenbank-Updates automatisch Tabellen hinzufügen?
Die Dokumentation von hook_update_N () erklärt nichts über die Einführung neuer Tabellen, während die Dokumentation vonhook_schema()
lautet:
Die von diesem Hook deklarierten Tabellen werden automatisch erstellt, wenn das Modul zum ersten Mal aktiviert wird , und entfernt, wenn das Modul deinstalliert wird.
(Highlight ist meins)
Und wenn ja, wie Sie am besten vermeiden, dass die Schemadefinitionen für die neue Tabelle sowohl in hook_update_N () als auch in hook_schema () dupliziert werden. Beziehen Sie sich einfach wie folgt auf das Schema:
function hook_update_N(&$sandbox) {
$schema = hook_schema();
$name = "foo";
$table = $schema["foo"];
db_create_table($name, $table);
}
Scheint zu funktionieren, aber beim erneuten Ändern der Tabelle schlägt dies fehl, wenn ein Benutzer die Aktualisierungen ausführt und zwei oder mehr hook_update_N () ausführen kann. Immerhin: Der erste hook_update_N installiert dann bereits die richtige Datenbank und der zweite hook_update_M () versucht, bereits aktuelle Spalten hinzuzufügen / zu ändern / zu ändern.
Wie gehst du damit um?