¿Cómo crear una tabla sin desinstalar y reinstalar el módulo?
-
16-10-2019 - |
Pregunta
Tengo un módulo y un archivo de instalación que se utiliza para crear una tabla.
Según mi requisito, necesito agregar otra tabla en el mismo archivo de instalación. Sé que al usar hook_schema()
Podemos crear n número de tablas.
Pero necesitamos desinstalar y reinstalar nuevamente para crear las tablas. Si uso esto, mis datos existentes se perderán, por lo que no debo hacer esto.
¿Hay alguna forma de crear una tabla sin desinstalar y reinstalar el módulo?
Solución
Este enlace respondió a mi pregunta: Tablas de actualización: Hook_update_n () Funciones.
Por ejemplo:
En Drupal 7:
<?php
/**
* Create new database table {mytable2}.
*/
function mymodule_update_7101() {
$schema['mytable2'] = array(
// table definition array goes here
);
db_create_table('mytable2', $schema['mytable2']);
}
?>
y en Drupal 6:
<?php
/**
* Create new database table {mytable2}.
*/
function mymodule_update_6101() {
$schema['mytable2'] = array(
// table definition array goes here
);
$ret = array();
db_create_table($ret, 'mytable2', $schema['mytable2']);
return $ret;
}
?>
Otros consejos
Hook_install () se llama solo cuando el módulo se instala por primera vez; después, hook_install()
Se llamará solo si primero desinstala el módulo.
Cuando actualiza un módulo, debe implementar Hook_Update_n (), que se ejecuta todas las veces que se actualiza el módulo. Al mismo tiempo, la implementación de Hook_schema () Debe actualizarse para incluir todo el esquema utilizado desde el módulo, para quién instala el módulo por primera vez.