Как могу задать Автоинкремент и Primary Key для уже существующего столбца в PostgreSQL?
Нужно для уже имеющегося столбца "ID" задать автоинкремент что бы автоматически генерировались значения в столбце при создании новых строк и Primary Key.
Пробую это сделать следующим запросом:
ALTER TABLE person ALTER COLUMN ID SET DATATYPE BIGSERIAL NOT NULL PRIMARY KEY;
Получаю ошибку. Поправьте пожалуйста как будет сделать правильно?
Ответы (2 шт):
Автор решения: eri
→ Ссылка
В постгресе нет автоинкремента. SERIAL работают только в create table. Вместо этого создается последовательность и назначается значением по умолчанию. Например:
CREATE TABLE content_tb ( id SERIAL, ..., title character varying(512) NOT NULL, body text NOT NULL, ... );
автоматически транслируется в:
CREATE SEQUENCE content_tb_id_seq; CREATE TABLE content_tb ( id integer DEFAULT nextval('content_tb_id_seq') NOT NULL, ..., title character varying(512) NOT NULL, body text NOT NULL, ... );
Сделайте CREATE SEQUENCE и Alter на default.
Автор решения: Rabban Keyak
→ Ссылка
ALTER TABLE person ALTER COLUMN ID ADD GENERATED ALWAYS AS IDENTITY;