Postgres Alter Column Integer to Boolean

后端 未结 2 480
面向向阳花
面向向阳花 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.

    0 讨论(0)
  • 2021-01-31 08:15

    Postgres can automatically cast integer to boolean. The key phrase is

    using some_col_name::boolean
    -- here some_col_name is the column you want to do type change
    

    Above Answer is correct that helped me Just one modification instead of case I used type casting

    ALTER TABLE mytabe ALTER COLUMN mycolumn DROP DEFAULT;
    ALTER TABLE mytabe ALTER mycolumn TYPE bool USING mycolumn::boolean;
    ALTER TABLE mytabe ALTER COLUMN mycolumn SET DEFAULT FALSE;
    
    0 讨论(0)
提交回复
热议问题