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:

ALTER TABLE table_nameALTER COLUMN column_name TYPE new_data_type;
Code language: CSS (css)

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. As SET DATA TYPE e TYPE 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:

ALTER TABLE table_nameALTER COLUMN column_name1 TYPE new_data_type,ALTER COLUMN column_name2 TYPE new_data_type,...;
Code language: SQL (Structured Query Language) (sql)

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:

ALTER TABLE table_nameALTER COLUMN column_name TYPE new_data_type USING expression;
Code language: SQL (Structured Query Language) (sql)

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.

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');
Code language: SQL (Structured Query Language) (sql)

Para alterar o tipo de dados do name coluna para VARCHAR, utiliza a seguinte declaração:

ALTER TABLE assets ALTER COLUMN name TYPE VARCHAR;
Code language: SQL (Structured Query Language) (sql)

A seguinte declaração muda os tipos de dados de description e location colunas de TEXT para VARCHAR:

ALTER TABLE assets ALTER COLUMN location TYPE VARCHAR, ALTER COLUMN description TYPE VARCHAR;
Code language: SQL (Structured Query Language) (sql)

Para alterar o tipo de dados da coluna asset_no para inteiro, utiliza-se a seguinte declaração:

ALTER TABLE assets ALTER COLUMN asset_no TYPE INT;
Code language: SQL (Structured Query Language) (sql)

PostgreSQL emitiu um erro e uma dica muito útil:

ERROR: column "asset_no" cannot be cast automatically to type integerHINT: You might need to specify "USING asset_no::integer".
Code language: SQL (Structured Query Language) (sql)

A seguinte declaração adiciona a cláusula USING à declaração acima:

ALTER TABLE assetsALTER COLUMN asset_no TYPE INT USING asset_no::integer;
Code language: SQL (Structured Query Language) (sql)

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

Categorias: Articles

0 comentários

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *