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
W powyższej tabeli widać, że użyłem typu danych – character varying dla id kolumna. Ale to był błąd, ponieważ zawsze podaję integers jako id . Więc używając varchar oto zła praktyka. Spróbujmy więc zmienić typ kolumny na integer .
ALTER TABLE test ALTER COLUMN id TYPE integer;
Ale zwraca:
Oznacza to, że nie możemy po prostu zmienić typu danych, ponieważ dane są już w kolumnie. Ponieważ dane są typu character varying Postgres nie może oczekiwać, że będzie to liczba całkowita, chociaż wprowadziliśmy tylko liczby całkowite. Więc teraz, jak zasugerował Postgres, możemy użyć USING wyrażenie do rzutowania naszych danych na liczby całkowite.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
To działa.
Powinieneś więc użyć
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;