Quando você cria uma nova tabela hook_schema()
, essa tabela deve ser adicionada hook_update_N()
também? Ou há algum truque, ou algo que eu perdi, para que as atualizações de dados adicionem tabelas automaticamente?
A documentação de hook_update_N () não explica nada sobre a introdução de novas tabelas, enquanto a documentaçãohook_schema()
diz:
As tabelas declaradas por esse gancho serão criadas automaticamente quando o módulo for ativado pela primeira vez e removidas quando o módulo for desinstalado.
(Destaque é meu)
E se sim, como evitar a duplicação das definições de esquema para a nova tabela em hook_update_N () e hook_schema (). Simplesmente consultando o esquema da seguinte maneira:
function hook_update_N(&$sandbox) {
$schema = hook_schema();
$name = "foo";
$table = $schema["foo"];
db_create_table($name, $table);
}
Parece funcionar, mas, ao mudar a tabela novamente, falhará se um usuário executar as atualizações e executar dois ou mais hook_update_N () s. Afinal: o primeiro hook_update_N já instalará o banco de dados correto e o segundo hook_update_M () tentará adicionar / alterar / alterar colunas que já estavam atualizadas.
Como você lida com isso?