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
Можете да видите от горната таблица, че съм използвал типа данни – character varying за id колона. Но беше грешка, защото винаги давам integers като id . И така, използвайки varchar ето една лоша практика. Така че нека се опитаме да променим типа на колоната на integer .
ALTER TABLE test ALTER COLUMN id TYPE integer;
Но връща:
Това означава, че не можем просто да променим типа данни, защото данните вече са там в колоната. Тъй като данните са от тип character varying Postgres не може да го очаква като цяло число, въпреки че въведохме само цели числа. Така че сега, както предложи Postgres, можем да използваме USING израз за преобразуване на нашите данни в цели числа.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
Работи.
Така че трябва да използвате
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;