Lorsque vous créez une nouvelle table dans hook_schema()
, cette table doit-elle également être ajoutée dans un hook_update_N()
? Ou y a-t-il une astuce, ou quelque chose que j'ai raté, pour que les mises à jour de données ajoutent automatiquement des tables?
La documentation de hook_update_N () n'explique rien sur l'introduction de nouvelles tables, alors que la documentation dehook_schema()
dit:
Les tables déclarées par ce hook seront automatiquement créées lors de la première activation du module et supprimées lors de la désinstallation du module.
(Le surlignage est à moi)
Et si c'est le cas, comment éviter au mieux de dupliquer les définitions de schéma pour la nouvelle table dans hook_update_N () et hook_schema (). Se référant simplement au schéma comme suit:
function hook_update_N(&$sandbox) {
$schema = hook_schema();
$name = "foo";
$table = $schema["foo"];
db_create_table($name, $table);
}
Semble fonctionner, mais en modifiant à nouveau la table, échouera si un utilisateur exécute les mises à jour et parvient à exécuter deux ou plusieurs hook_update_N () s. Après tout: le premier hook_update_N installera alors déjà la bonne base de données et le second hook_update_M () essaiera d'ajouter / modifier / modifier des colonnes qui étaient déjà à jour.
Comment gérez-vous cela?