Когда вы создаете новую таблицу в hook_schema()
, должна ли эта таблица также добавляться в hook_update_N()
? Или есть какой-то трюк или что-то, что я пропустил, чтобы databae-updates автоматически добавляли таблицы?
Документация о hook_update_N () ничего не объясняет о введении новых таблиц, тогда как документацияhook_schema()
говорит:
Таблицы, объявленные этим хуком, будут автоматически созданы при первом включении модуля и удалены при удалении модуля.
(Изюминка моя)
И если да, то как лучше всего не дублировать определения схемы для новой таблицы как в hook_update_N (), так и в hook_schema (). Просто ссылаясь на схему следующим образом:
function hook_update_N(&$sandbox) {
$schema = hook_schema();
$name = "foo";
$table = $schema["foo"];
db_create_table($name, $table);
}
Кажется, работает, но при повторном изменении таблицы произойдет сбой, если пользователь запустит обновления и запустит два или более hook_update_N (). В конце концов: первый hook_update_N уже установит правильную базу данных, а второй hook_update_M () попытается добавить / изменить / изменить столбцы, которые уже были обновлены.
Как вы справляетесь с этим?