Czy podczas tworzenia nowej tabeli hook_schema()
należy również dodać tę tabelę hook_update_N()
? A może jest jakaś sztuczka lub coś, co przeoczyłem, aby aktualizacje danych automatycznie dodawały tabele?
Dokumentacja hook_update_N () nie wyjaśnia niczego na temat wprowadzania nowych tabel, podczas gdy dokumentacjahook_schema()
mówi:
Tabele zadeklarowane przez ten hook zostaną automatycznie utworzone przy pierwszym włączeniu modułu i usunięte po odinstalowaniu modułu.
(Highlight is my)
A jeśli tak, jak najlepiej uniknąć powielania definicji schematów dla nowej tabeli zarówno w hook_update_N (), jak i hook_schema (). Po prostu odnosząc się do schematu w następujący sposób:
function hook_update_N(&$sandbox) {
$schema = hook_schema();
$name = "foo";
$table = $schema["foo"];
db_create_table($name, $table);
}
Wydaje się, że działa, ale przy ponownej zmianie tabeli nie powiedzie się, jeśli użytkownik uruchomi aktualizacje i dostanie dwa lub więcej hook_update_N () s. W końcu: pierwsza hook_update_N zainstaluje już poprawną bazę danych, a druga hook_update_M () spróbuje dodać / zmienić / zmienić kolumny, które były już aktualne.
Jak sobie z tym radzisz?