Resumo: este tutorial mostra-lhe passo a passo como alterar o tipo de dados de uma coluna usando a declaração ALTER TABLE
.
PostgreSQL alterar o tipo de declaração da coluna
Para alterar o tipo de dados de uma coluna, utiliza-se a declaração ALTER TABLE
como se segue:
Code language: CSS (css)ALTER TABLE table_nameALTER COLUMN column_name TYPE new_data_type;
Vamos examinar a declaração com mais detalhe:
- Primeiro, especifique o nome da tabela para a qual a coluna que pretende alterar após o
ALTER TABLE
palavras-chave. - Segundo, especifique o nome da coluna que pretende alterar o tipo de dados após a
ALTER COLUMN
cláusula. - Terceiro, forneça o novo tipo de dados para a coluna após a
TYPE
palavra-chave. AsSET DATA TYPE
eTYPE
são equivalentes.
Para alterar os tipos de dados de múltiplas colunas numa única declaração, usa-se múltiplas ALTER COLUMN
cláusulas como esta:
Code language: SQL (Structured Query Language) (sql)ALTER TABLE table_nameALTER COLUMN column_name1 TYPE new_data_type,ALTER COLUMN column_name2 TYPE new_data_type,...;
Nesta sintaxe, adiciona-se uma vírgula (,
) depois de cada ALTER COLUMN
cláusula.
PostgreSQL permite-lhe converter os valores de uma coluna para os novos, enquanto altera o seu tipo de dados adicionando uma cláusula USING
como se segue:
Code language: SQL (Structured Query Language) (sql)ALTER TABLE table_nameALTER COLUMN column_name TYPE new_data_type USING expression;
A cláusula USING
especifica uma expressão que lhe permite converter os valores antigos para os novos.
Se omitir a cláusula USING
, o PostgreSQL lançará os valores para os novos implicitamente. Caso o elenco falhe, o PostgreSQL emitirá um erro e recomenda-se que forneça a cláusula USING
com uma expressão para a conversão de dados.
A expressão após o USING
a palavra-chave pode ser tão simples como column_name::new_data_type
como price::numeric
ou tão complexa como uma função personalizada.
Exemplos de alteração do tipo de coluna PostgreSQL
Vamos criar uma nova tabela chamada assets
e inserir algumas linhas na tabela para a demonstração.
Code language: SQL (Structured Query Language) (sql)CREATE TABLE assets ( id serial PRIMARY KEY, name TEXT NOT NULL, asset_no VARCHAR NOT NULL, description TEXT, location TEXT, acquired_date DATE NOT NULL);INSERT INTO assets(name,asset_no,location,acquired_date)VALUES('Server','10001','Server room','2017-01-01'), ('UPS','10002','Server room','2017-01-01');
Para alterar o tipo de dados do name
coluna para VARCHAR
, utiliza a seguinte declaração:
Code language: SQL (Structured Query Language) (sql)ALTER TABLE assets ALTER COLUMN name TYPE VARCHAR;
A seguinte declaração muda os tipos de dados de description
e location
colunas de TEXT
para VARCHAR
:
Code language: SQL (Structured Query Language) (sql)ALTER TABLE assets ALTER COLUMN location TYPE VARCHAR, ALTER COLUMN description TYPE VARCHAR;
Para alterar o tipo de dados da coluna asset_no
para inteiro, utiliza-se a seguinte declaração:
Code language: SQL (Structured Query Language) (sql)ALTER TABLE assets ALTER COLUMN asset_no TYPE INT;
PostgreSQL emitiu um erro e uma dica muito útil:
Code language: SQL (Structured Query Language) (sql)ERROR: column "asset_no" cannot be cast automatically to type integerHINT: You might need to specify "USING asset_no::integer".
A seguinte declaração adiciona a cláusula USING
à declaração acima:
Code language: SQL (Structured Query Language) (sql)ALTER TABLE assetsALTER COLUMN asset_no TYPE INT USING asset_no::integer;
Funcionou como esperado.
Neste tutorial, aprendeu como usar a instrução ALTER TABLE ALTER COLUMN
para alterar o tipo de uma coluna.
- Foi útil este tutorial ?
- Sim Não
0 comentários