具有5列的现有表。
qid
是PK,question
geo_type
user_input
active
我需要能够插入到表中,并且每个新插入都会获得一个新的主键ID(这将是现有的最大ID +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列
答案 0 :(得分:1)
新序列必须达到当前最大值。
您可以使用重置它
SELECT setval('s_questions_qid_seq', max(id)) FROM sip_questions;