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
U kunt aan de bovenstaande tabel zien dat ik het gegevenstype heb gebruikt - character varying
voor id
kolom. Maar het was een vergissing, want ik geef altijd integers
als id
. Dus met behulp van varchar
hier is een slechte gewoonte. Dus laten we proberen het kolomtype te veranderen in integer
.
ALTER TABLE test ALTER COLUMN id TYPE integer;
Maar het komt terug:
Dat betekent dat we het gegevenstype niet zomaar kunnen wijzigen, omdat er al gegevens in de kolom staan. Aangezien de gegevens van het type zijn character varying
Postgres kan het niet als geheel getal verwachten, hoewel we alleen gehele getallen hebben ingevoerd. Dus nu, zoals Postgres suggereerde, kunnen we de USING
. gebruiken expressie om onze gegevens in gehele getallen te gieten.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
Het werkt.
Dus je moet
. gebruikenalter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;