INTEGER NOT NULL DEFAULT 0 olan bir alanım var ve bunu boole değiştirmem gerekiyor.Postgres Alter Sütun Tamsayı için Boole
ALTER TABLE mytabe
ALTER mycolumn TYPE bool
USING
CASE
WHEN 0 THEN FALSE
ELSE TRUE
END;
Ama alıyorum:
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
herhangi bir fikir
Bu kullanıyorum nedir?
Teşekkürler.
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;
Sen (onun değil boolean olarak) ilk kısıtlamasını kaldırmak gerekir ve ikinci olarak da CASE
beyanı sözdizimsel yanlıştı:
öyle çünkü Kabul cevabı daha iyidir * değil kullanılan yerine davanın sadece bir değişiklik yardımcı olduğu doğrudur. Bu yöntem, örneğin, "boolean için type smallint yazamaz" ile başarısız olur. –