@prokopov-vi

Возможно ли изменить тип колонки на serial?

Есть таблица с заполненными данными:

CREATE TABLE "Виплата"
(
  old integer NOT NULL,
  "Код_договору" integer,
  "Дата" timestamp(0) without time zone,
  "Сума_виплат" text,
  "Оплата" boolean,
  "Код" integer,
  CONSTRAINT "Виплата_pkey" PRIMARY KEY (old)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "Виплата"
  OWNER TO postgres;


Обязательно нужно изменить тип колонки "Код" на serial! Обычным
ALTER: ALTER TABLE "Виплата" ALTER COLUMN "Код" type serial;
не получается это сделать, потому что serial не тип ERROR: type "serial" does not exist ! Но сделать это очень нужно.

Каким способом можно это реализовать ?
  • Вопрос задан
  • 2869 просмотров
Решения вопроса 1
mahoho
@mahoho
Full stack certified PHP developer.
SERIAL в PostreSQL это не тип данных, а алиас для создания SEQUENCE и DEFAULT VALUE для колонки из нее. Соответственно, вы можете ручками проделать описанные действия:
CREATE SEQUENCE tablename_colname_seq;
alter TABLE "Виплата" alter column "Код" type integer NOT NULL DEFAULT nextval('tablename_colname_seq');
ALTER SEQUENCE tablename_colname_seq OWNED BY "Виплата"."Код";
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
В голову приходит только следующая последовательность действий: добавление нового поля с типом serial, изменения в нем значений из Код, удаления Код, переименование поля saerial в Код.
Зачем имена полей на русском? Глаз режет :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы