Quando si crea una nuova tabella in hook_schema()
, anche quella tabella deve essere aggiunta in un hook_update_N()
? Oppure c'è qualche trucco, o qualcosa che mi è sfuggito, per fare in modo che gli aggiornamenti dei databae aggiungano automaticamente le tabelle?
La documentazione di hook_update_N () non spiega nulla sull'introduzione di nuove tabelle, mentre la documentazione dihook_schema()
dice:
Le tabelle dichiarate da questo hook verranno create automaticamente quando il modulo viene abilitato per la prima volta e rimosse quando il modulo viene disinstallato.
(Il momento saliente è mio)
E in tal caso, come evitare al meglio la duplicazione delle definizioni dello schema per la nuova tabella in hook_update_N () e hook_schema (). Facendo semplicemente riferimento allo schema come segue:
function hook_update_N(&$sandbox) {
$schema = hook_schema();
$name = "foo";
$table = $schema["foo"];
db_create_table($name, $table);
}
Sembra funzionare, ma cambiando di nuovo la tabella, fallirà se un utente esegue gli aggiornamenti e riesce a eseguire due o più hook_update_N (). Dopotutto: il primo hook_update_N installerà quindi già il database corretto e il secondo hook_update_M () proverà ad aggiungere / cambiare / modificare colonne che erano già aggiornate.
come lo gestisci?