나는 INTEGER NOT NULL DEFAULT 0 인 필드를 가지고 있으며 bool로 변경해야합니다.Postgres Alter Column Integer to Boolean
ALTER TABLE mytabe
ALTER mycolumn TYPE bool
USING
CASE
WHEN 0 THEN FALSE
ELSE TRUE
END;
을하지만 점점 오전 :
ERROR: argument of CASE/WHEN must be type boolean, not type integer
********** Error **********
ERROR: argument of CASE/WHEN must be type boolean, not type integer
SQL state: 42804
어떤 생각
이것은 내가 사용하고 무엇입니까?
감사합니다.
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;
당신은 (그되지 부울) 먼저 제약 조건을 제거해야하고, 둘째로 당신의 CASE
문장은 문법적으로 틀린 :
는 않기 때문에 허용 대답은 더 *하지를 사용하는 대신에 케이스의 한 수정 도움이 올바른 것입니다. 이 메소드는 'smallint를 부울로 변환 할 수 없습니다'와 같이 실패합니다. –