ALTER TABLE nome_da_tabela RENAME coluna_antiga TO coluna_nova;
Significado:
- ALTER TABLE: comando do postgresql para alterar a tabela;
- nome_da_tabela: nome da tabela que contém a coluna que será alterada;
- RENAME coluna_antiga TO coluna_nova: renomeia o nome antigo da coluna para um nome novo;
Exemplo:
Na tabela "esporte" queremos alterar o nome da coluna "modalidade_desc" para "esporte_desc". A tabela pode ser visualizada na imagem abaixo.
Após executarmos o comando:
ALTER TABLE esporte RENAME modalidade_desc TO esporte_desc;
A coluna será renomeada conforme imagem exibida abaixo.
Caso precise renomear várias colunas em um único comando, foi criada a função (function) "fnc_renomear_multiplas_colunas" para executar estas alterações.
Para uma melhor visualização clique no link abaixo e veja no GitHub:
fnc_renomear_multiplas_colunas
ou faça o download no Google Drive
fnc_renomear_multiplas_colunas
Leia também:
PostgreSql - mudar o nome de uma tabela
oi boa noite!!
ResponderExcluirgostaria de saber se é possivel renomear mais de uma coluna com um só comando, ou nao, tenho que usar um alter table diferente para cada coluna??
Bom Dia Tron,
ResponderExcluirVocê pode utilizar o comando ALTER TABLE com mais de uma coluna, por exemplo, para incluir ou excluir coluna. Para renomear vc não consegue, porém você pode criar uma função para isto. Exemplo:
------------------------------------------------------------------------------------
Execute o script abaixo para criar a função altera_colunas:
CREATE OR REPLACE FUNCTION altera_colunas(nome_da_tabela character varying, nome_colunas varchar[][])
RETURNS RECORD as
$$
DECLARE
m varchar[];
str_query TEXT;
msg record;
BEGIN
FOR i IN array_lower(nome_colunas, 1) .. array_upper(nome_colunas, 1) LOOP
str_query := 'ALTER TABLE ' || quote_ident(nome_da_tabela) || ' RENAME ' || quote_ident(nome_colunas[i][1]) || ' TO ' || quote_ident(nome_colunas[i][2]);
RAISE NOTICE '%', str_query;
EXECUTE str_query;
END LOOP;
SELECT INTO msg 'COLUNA(S) ALTERADA COM SUCESSO';
RETURN msg;
END
$$
LANGUAGE plpgsql;
-----------------------------------------------------------------------------------------------------
Após ter criado a função você pode executar a função que altera mais de uma coluna de uma vez. O primeiro parâmetro você passa o nome da tabela, no segundo parâmetro você passa primeiro o nome da coluna atual e depois o nome novo da coluna. Exemplo:
SELECT altera_colunas
(
'esporte',
array
[
array['id','cod'],
array['modalidade_desc', 'esporte']
]
::varchar[][]
);
Qualquer dúvida manda uma mensagem.
Abraço