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
Z výše uvedené tabulky můžete vidět, že jsem použil datový typ – character varying
pro id
sloupec. Ale byla to chyba, protože vždy dávám integers
jako id
. Tedy pomocí varchar
tady je špatná praxe. Zkusme tedy změnit typ sloupce na integer
.
ALTER TABLE test ALTER COLUMN id TYPE integer;
Ale vrátí:
To znamená, že nemůžeme jednoduše změnit typ dat, protože data ve sloupci již jsou. Protože data jsou typu character varying
Postgres to nemůže očekávat jako celé číslo, i když jsme zadali pouze celá čísla. Takže nyní, jak navrhl Postgres, můžeme použít USING
výraz pro přetypování našich dat na celá čísla.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
Funguje to.
Měli byste tedy použít
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;