Renomeação de colunas sem indisponibilidade
Adicione a nova coluna, grave nas duas, preencha os dados existentes, alterne as leituras e remova a antiga — o padrão consagrado de renomeação sem indisponibilidade.
Renomeação de colunas sem indisponibilidade é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
A abordagem ingênua falha
ALTER TABLE t RENAME COLUMN a TO b; altera somente os metadados — é rápido. BUT o aplicativo espera a coluna "a"; depois da renomeação, todas as consultas que leem "a" falham.
Estratégia: expandir → migrar → contrair
O padrão consagrado para não haver tempo de inatividade:
- Expandir — adicionar a nova coluna sem remover a antiga
- Fazer o aplicativo gravar em ambas por algum tempo
- Migrar — preencher os dados históricos na nova coluna
- Alterar as leituras para a nova coluna
- Contrair — remover a coluna antiga
Passo a passo: renomeando user_name → full_name
Orientação detalhada:
Passo 1 — Adicionar a nova coluna
Sem interrupção (somente metadados no PG 11+ com um valor padrão constante):
ALTER TABLE users ADD COLUMN full_name VARCHAR(100);Passo 2 — Gravação dupla
Implante um código que grave em ambas as colunas:
// App writes to both:
UPDATE users SET user_name = $1, full_name = $1 WHERE id = $2;
INSERT INTO users (..., user_name, full_name) VALUES (..., $name, $name);Passo 3 — Preenchimento retroativo
Copie os dados históricos em lotes:
UPDATE users SET full_name = user_name
WHERE full_name IS NULL
AND id IN (
SELECT id FROM users WHERE full_name IS NULL LIMIT 10000
);
-- Run in a loop until 0 rows affected.Passo 4 — Adicionar NOT NULL (sem interrupção)
Depois do preenchimento retroativo, aplique NOT NULL com segurança:
ALTER TABLE users
ADD CONSTRAINT fn_not_null CHECK (full_name IS NOT NULL) NOT VALID;
ALTER TABLE users VALIDATE CONSTRAINT fn_not_null;
ALTER TABLE users ALTER COLUMN full_name SET NOT NULL;
ALTER TABLE users DROP CONSTRAINT fn_not_null;Passo 5 — Alterar as leituras
Implante um código que leia full_name em vez de user_name.
Passo 6 — Interromper as gravações duplas
Implante um código que grave somente em full_name.
Passo 7 — Remover a coluna antiga
Sem interrupção (somente metadados):
ALTER TABLE users DROP COLUMN user_name;Compromisso: tempo e complexidade
Uma simples renomeação se transforma em 4 a 7 implantações ao longo de dias ou semanas. Para sistemas de produção não triviais, esse é o único caminho seguro.
Renomeando tabelas
Padrão semelhante, mas mais difícil. Use VIEW como um alias temporário:
ALTER TABLE old_name RENAME TO new_name;
CREATE VIEW old_name AS SELECT * FROM new_name;
-- Deploy new code. Then drop the view.Resumo
As renomeações de colunas sem tempo de inatividade seguem o fluxo expandir → migrar → contrair.
- Adicionar a nova coluna
- Fazer gravações duplas
- Preencher os dados retroativamente em lotes
- Alterar as leituras
- Interromper as gravações antigas
- Remover a coluna antiga
Verificação rápida
Qual fase vem IMMEDIATELY depois de implantar gravações duplas nas colunas antiga e nova?
Perguntas Frequentes
A aula “Renomeação de colunas sem indisponibilidade” é grátis?
Sim — o texto completo de “Renomeação de colunas sem indisponibilidade” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “Renomeação de colunas sem indisponibilidade”?
Adicione a nova coluna, grave nas duas, preencha os dados existentes, alterne as leituras e remova a antiga — o padrão consagrado de renomeação sem indisponibilidade. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Renomeação de colunas sem indisponibilidade”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Migrações on-line: por que ALTER TABLE bloqueia
- Índices concorrentes (CREATE INDEX CONCURRENTLY)
- Renomeação de colunas sem indisponibilidade
- Ferramentas: Flyway, Liquibase, Sqitch