Jag citerar manualen om ALTER TABLE
:
En USING-klausul måste tillhandahållas om det inte finns någon implicit eller assignmentcast från gammal till ny typ.
Det du behöver är:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int; ALTER TABLE listings ALTER latitude TYPE integer USING latitude::int;
Eller kortare och snabbare (för stora bord) med ett kommando:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int
,ALTER latitude TYPE integer USING latitude::int;
Detta fungerar med eller utan data så länge alla poster är konverterbara till integer
.
Om du har definierat en DEFAULT
för kolumnen kan du behöva släppa och återskapa det för den nya typen.
Här är en bloggartikel om hur man gör detta med ActiveRecord.
Eller gå med @mus råd i kommentaren. Han kan sin Ruby. Jag är bara bra med PostgreSQL här.