Postgres: изменение типа колонки с boolean на integer

Возникла необходимость изменить тип колонки в Postgres. Вот запрос для смены типа колонки и краткий разбор:

-- делаем default value в null, поскольку это универсальное значение
ALTER TABLE work_shifts ALTER status SET DEFAULT NULL;

ALTER TABLE work_shifts
  -- меняем тип
  ALTER status TYPE INTEGER
  -- конвертируем данные
  USING
    CASE
      WHEN 'f' THEN 0 ELSE 1
    END;

-- устанавливаем значение по умолчанию согласно новому типу данных
ALTER TABLE work_shifts ALTER status SET DEFAULT 0;

Комментарии

comments powered by Disqus
Яндекс.Метрика