Ik citeer de handleiding over ALTER TABLE
:
Er moet een USING-clausule worden opgegeven als er geen impliciete of toewijzing van het oude naar het nieuwe type is.
Wat je nodig hebt is:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int; ALTER TABLE listings ALTER latitude TYPE integer USING latitude::int;
Of korter en sneller (voor grote tafels) in één commando:
ALTER TABLE listings ALTER longitude TYPE integer USING longitude::int
,ALTER latitude TYPE integer USING latitude::int;
Dit werkt met of zonder gegevens zolang alle invoeren converteerbaar zijn naar integer
.
Als u een DEFAULT
. heeft gedefinieerd voor de kolom, moet u die mogelijk verwijderen en opnieuw maken voor het nieuwe type.
Hier is een blogartikel over hoe je dit kunt doen met ActiveRecord.
Of volg @mu's advies in de opmerking. Hij kent zijn Ruby. Ik ben hier alleen goed met PostgreSQL.