#postgresql
#postgresql
Вопрос:
Существующая таблица с 5 столбцами.
qid
какой PK, question
geo_type
user_input
active
Мне нужно иметь возможность вставлять в таблицу с каждой новой вставкой, получая новый идентификатор первичного ключа (который был бы максимальным существующим идентификатором 1).
Итак, мне нужно иметь возможность сделать это
insert into sip_questions (question,geo_type,user_input,active) values('noury','octagon',TRUE,TRUE)
но это выдает мне эту ошибку
ERROR: duplicate key value violates unique constraint "s_questions_pkey"
DETAIL: Key (qid)=(1) already exists.
********** Error **********
ERROR: duplicate key value violates unique constraint "s_questions_pkey"
SQL state: 23505
Detail: Key (qid)=(1) already exists.
это таблица
CREATE TABLE public.sip_questions
(
qid integer NOT NULL DEFAULT nextval('s_questions_qid_seq'::regclass),
question character varying(200),
geo_type character varying(10),
user_input boolean,
active boolean,
CONSTRAINT s_questions_pkey PRIMARY KEY (qid)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.sip_questions
OWNER TO postgres;
я знаю, как это сделать из новой таблицы, подобной этой
ALTER TABLE table ADD COLUMN id SERIAL PRIMARY KEY;
и каждая вставка будет увеличивать PK без необходимости указывать столбец id
Ответ №1:
Новая последовательность должна быть увеличена до текущего максимального значения.
Вы можете сбросить его с помощью
SELECT setval('s_questions_qid_seq', max(id)) FROM sip_questions;