Cuando crea una nueva tabla hook_schema()
, ¿debería agregarse esa tabla también en una hook_update_N()
? ¿O hay algún truco, o algo que me perdí, para que las actualizaciones de databae agreguen tablas automáticamente?
La documentación de hook_update_N () no explica nada acerca de la introducción de nuevas tablas, mientras que la documentación dehook_schema()
dice:
Las tablas declaradas por este enlace se crearán automáticamente cuando el módulo se habilite por primera vez y se eliminarán cuando se desinstale el módulo.
(Lo más destacado es mío)
Y si es así, cómo evitar mejor duplicar las definiciones de esquema para la nueva tabla tanto en hook_update_N () como en hook_schema (). Simplemente refiriéndose al esquema de la siguiente manera:
function hook_update_N(&$sandbox) {
$schema = hook_schema();
$name = "foo";
$table = $schema["foo"];
db_create_table($name, $table);
}
Parece funcionar, pero al cambiar la tabla nuevamente, fallará si un usuario ejecuta las actualizaciones y puede ejecutar dos o más hook_update_N () s. Después de todo: el primer hook_update_N ya instalará la base de datos correcta y el segundo hook_update_M () intentará agregar / cambiar / alterar las columnas que ya estaban actualizadas.
Como tratas con esto?