postgresql автоматически увеличивает существующий первичный ключ при вставке

#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;