DATABASE_ARCHITECT explica: "O comando ALTER é sua ferramenta para evolução do banco de dados. Com ele, você pode modificar estruturas existentes sem perder dados."
ALTER TABLE
SCHEMA_MASTER apresenta: "Vamos explorar as principais operações de alteração de tabelas."
1. Adicionando Colunas
-- Adicionando uma coluna simples
ALTER TABLE produtos
ADD COLUMN descricao TEXT;
-- Adicionando múltiplas colunas
ALTER TABLE usuarios
ADD COLUMN ultimo_acesso TIMESTAMP,
ADD COLUMN tentativas_login INTEGER DEFAULT 0,
ADD COLUMN bloqueado BOOLEAN DEFAULT FALSE;
-- Adicionando coluna com constraint
ALTER TABLE pedidos
ADD COLUMN valor_total DECIMAL(10,2) NOT NULL DEFAULT 0.0
CHECK (valor_total >= 0);
2. Modificando Colunas
MIGRATION_SPECIALIST adverte: "Cuidado ao modificar tipos de dados - certifique-se da compatibilidade!"
-- Alterando tipo de dados
ALTER TABLE produtos
ALTER COLUMN preco TYPE NUMERIC(12,2);
-- Modificando valor default
ALTER TABLE usuarios
ALTER COLUMN status SET DEFAULT 'ativo';
-- Removendo valor default
ALTER TABLE logs
ALTER COLUMN nivel DROP DEFAULT;
-- Tornando coluna NOT NULL
ALTER TABLE clientes
ALTER COLUMN email SET NOT NULL;
3. Constraints
INTEGRITY_GUARDIAN compartilha: "Constraints garantem a qualidade dos seus dados."
REFACTORING_MASTER diz: "Às vezes precisamos reorganizar nossa estrutura."
-- Renomeando tabela
ALTER TABLE usuarios
RENAME TO users;
-- Renomeando coluna
ALTER TABLE produtos
RENAME COLUMN descricao TO detalhes;
-- Renomeando constraint
ALTER TABLE pedidos
RENAME CONSTRAINT fk_cliente TO fk_pedidos_cliente;
ALTER INDEX
INDEX_WIZARD explica: "Índices também precisam de manutenção."
-- Renomeando índice
ALTER INDEX idx_old_name
RENAME TO idx_new_name;
-- Modificando configurações do índice
ALTER INDEX idx_produtos
SET (fillfactor = 90);
ALTER SEQUENCE
SEQUENCE_MASTER compartilha: "Ajuste suas sequences conforme necessário."
-- Modificando sequence
ALTER SEQUENCE seq_pedidos
INCREMENT BY 10
MAXVALUE 999999
CYCLE;
Cenários Práticos
PRACTICAL_GURU apresenta: "Vamos ver alguns cenários comuns do mundo real!"
╔════════════════════════════════════════════╗
║ CHECKLIST DE ALTERAÇÕES: ║
║ □ Backup realizado? ║
║ □ Testado em desenvolvimento? ║
║ □ Script de rollback preparado? ║
║ □ Impacto analisado? ║
║ □ Equipe notificada? ║
║ □ Janela de manutenção agendada? ║
╚════════════════════════════════════════════╝
Troubleshooting Comum
ERROR_HANDLER apresenta soluções para problemas frequentes:
Erro de Dependência
-- Verificando dependências
SELECT * FROM pg_depend
WHERE objid = 'sua_tabela'::regclass;
-- Removendo dependências com cautela
DROP VIEW IF EXISTS view_dependente CASCADE;
Problemas de Bloqueio
-- Verificando bloqueios
SELECT * FROM pg_locks
WHERE relation = 'sua_tabela'::regclass;
-- Finalizando sessões bloqueantes (com cautela!)
SELECT pg_terminate_backend(pid);
Conclusão
DATABASE_ARCHITECT conclui: "O ALTER é poderoso, mas requer responsabilidade. Sempre planeje suas alterações e siga as boas práticas para manter seu banco de dados saudável e evolutivo."