0Pricing
SQL Academy · Aula

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:

  1. Expandir — adicionar a nova coluna sem remover a antiga
  2. Fazer o aplicativo gravar em ambas por algum tempo
  3. Migrar — preencher os dados históricos na nova coluna
  4. Alterar as leituras para a nova coluna
  5. 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

  1. Migrações on-line: por que ALTER TABLE bloqueia
  2. Índices concorrentes (CREATE INDEX CONCURRENTLY)
  3. Renomeação de colunas sem indisponibilidade
  4. Ferramentas: Flyway, Liquibase, Sqitch
← Voltar para SQL Academy