0
私はPosgres 8.4を実行していると私は、次の表pkが挿入から除外されたときに、Postgresのシリアルpkを含むselectの挿入が重複pkエラーを生成するのはなぜですか?私は次のクエリを実行しようとしたとき
CREATE TABLE communitynetwork_listitem
(
id serial NOT NULL,
"MdUsr" integer,
"MdDT" timestamp with time zone NOT NULL,
"CrUsr" integer,
"CrDT" timestamp with time zone NOT NULL,
category_id character varying(15) NOT NULL,
"name" character varying(200) NOT NULL,
"order" integer NOT NULL,
"extraInfo" boolean NOT NULL,
"multiLineInfo" boolean NOT NULL,
"descrLabel" character varying(50) NOT NULL,
"decimalReq" boolean NOT NULL,
"decimalLabel" character varying(50) NOT NULL,
"decimalLabelDisplay" character varying(50) NOT NULL,
"descrLabelDisplay" character varying(50) NOT NULL,
CONSTRAINT communitynetwork_listitem_pkey PRIMARY KEY (id),
CONSTRAINT "category_id_refs_catId_69f2992c" FOREIGN KEY (category_id)
REFERENCES communitynetwork_listcategory ("catId") MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION DEFERRABLE INITIALLY DEFERRED,
CONSTRAINT communitynetwork_listitem_category_id_64fdc58a_uniq UNIQUE (category_id, name)
)
WITH (
OIDS=FALSE
);
を持って、それは私がcommunitynetwork_listitem_pkey制約に違反していることを言って私にエラーを与えました。それがなぜ起こっているのでしょうか?
insert into communitynetwork_listitem ("MdUsr", "MdDT", "CrUsr", "CrDT", category_id, name, "order", "extraInfo", "multiLineInfo", "descrLabel", "decimalReq", "decimalLabel", "decimalLabelDisplay", "descrLabelDisplay")
select "MdUsr", "MdDT", "CrUsr", "CrDT", category_id, name, 0, "extraInfo", "multiLineInfo", "descrLabel", "decimalReq", "decimalLabel", "decimalLabelDisplay", "descrLabelDisplay"
from communitynetwork_listitem_import liImp
where not exists (select *
from communitynetwork_listitem li
where li.name = liImp.name
and li.category_id = liImp.category_id)
私はcommunitynetwork_listitem_pkey違反に驚いていますが、(名前、カテゴリ)がソーステーブル内で一意でない場合、communitynetwork_listitem_category_id_64fdc58a_uniqに違反が見られる可能性があります –