Postgres Alter Column Integer to Boolean

后端 未结 2 481
面向向阳花
面向向阳花 2021-01-31 07:22

I\'ve a field that is INTEGER NOT NULL DEFAULT 0 and I need to change that to bool.

This is what I am using:

ALTER TABLE mytabe 
ALTER mycolumn TYPE bool         


        
2条回答
  •  太阳男子
    2021-01-31 08:12

    Try this:

    ALTER TABLE mytabe ALTER COLUMN mycolumn DROP DEFAULT;
    ALTER TABLE mytabe ALTER mycolumn TYPE bool USING CASE WHEN mycolumn=0 THEN FALSE ELSE TRUE END;
    ALTER TABLE mytabe ALTER COLUMN mycolumn SET DEFAULT FALSE;
    

    You need to remove the constraint first (as its not a boolean), and secondly your CASE statement was syntactically wrong.

提交回复
热议问题