create table test(id varchar );
insert into test values('1');
insert into test values('11');
insert into test values('12');
select * from test
--Result--
id
character varying
--------------------------
1
11
12
Você pode ver na tabela acima que eu usei o tipo de dados –
character varying
para id
coluna. Mas foi um erro porque estou sempre dando integers
como id
. Então, usando varchar
aqui é uma má prática. Então vamos tentar mudar o tipo de coluna para integer
. ALTER TABLE test ALTER COLUMN id TYPE integer;
Mas retorna:
Isso significa que não podemos simplesmente alterar o tipo de dados porque os dados já estão na coluna. Como os dados são do tipo
character varying
O Postgres não pode esperar isso como um número inteiro, embora tenhamos inserido apenas números inteiros. Então agora, como o Postgres sugeriu, podemos usar o USING
expressão para converter nossos dados em números inteiros. ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
Funciona.
Então você deve usar
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;