Resposta curta: Não.
Resposta mais longa: A determinação mágica do caminho do Esquema A para o Esquema B está além das capacidades de um programa de computador, mesmo que seja tão complexo quanto um sistema de banco de dados. Um humano precisa se envolver.
O procedimento de atualização do banco de dados deve incluir a criação de um script de atualização (por exemplo, updates-1.3.0.sql
) que faça as coisas apropriadas e necessárias, incluindo:
-
CREATE TABLE
,ALTER TABLE
eDROP TABLE
comandos -
CREATE INDEX
eDROP INDEX
comandos - Qualquer SQL Magic (inserção / exclusão / atualização de dados)
- Criar acionadores / restrições apropriados
- Fazendo
VACUUM
(ouVACUUM FULL
/VACUUM ANALYZE
conforme apropriado)
Em seguida, compare sua versão atual do esquema (você pode armazenar isso no banco de dados em algum lugar) na lista de scripts de atualização que você possui e execute os scripts de atualização para fazer a transição para o novo esquema.
Por exemplo, se você estiver executando a revisão de esquema 1.2.0 e desejar fazer a transição para o 1.3.0, você aplicaria o updates-1.2.1.sql
, updates-1.2.2.sql
,. . ., updates-1.3.0.sql
Algumas dicas sobre os scripts de atualização:
-
Certifique-se de que tudo esteja agrupado em uma transação (
BEGIN
...ROLLBACK
...COMMIT
).
Se algo der errado, você será capaz de abortar todo o desastre sem deixar seu banco de dados em um estado estragado / inconsistente. -
Escreva seus scripts de atualização à medida que você escreve seu novo esquema.
Na verdade, meu método usual de escrever um arquivo SQL para criar o novo esquema em um banco de dados vazio é desenvolver o script de upgrade, executá-lo em um banco de dados vazio e despejar o esquema resultante - Isso garante que o script "bare metal" produz resultados idênticos aos que você obteria do processo de atualização. -
Espere que as atualizações falhem - Inclua erros detalhados (
RAISE EXCEPTION
/RAISE NOTICE
) e certifique-se de que os programas que executam os scripts SQL de atualização parem se um erro for encontrado.