0
今天,我开始端口MySQL数据库PostgreSQL和我有一个外键和他们的“共享”PostgreSQL的引用外键的多个表
一个问题,我不知道该怎么解释,所以这里是创建脚本的一些伪代码:
create table id_generator (
id serial PRIMARY KEY,
description varchar(50));
create table parent (
id REFERENCES id_generator(id),
--content);
create table child (
id REFERENCES id_generator(id),
id_parent REFERENCES parent(id),
--content);
于是我就用一个表作为“id_generator”创建ID和给其他表的值表的引用。在MySql中,我没有任何问题,所以我希望它也能在PostgreSQL中工作。
运行该脚本时,出现错误消息,我需要/unique
对表parent
创建一个引用。所以我把它改成:
create table id_generator (
id serial PRIMARY KEY,
description varchar(50));
create table parent (
id REFERENCES id_generator(id) PRIMARY KEY,
--content);
create table child (
id REFERENCES id_generator(id),
id_parent REFERENCES parent(id),
--content);
所以服务器接受创建脚本,并且所有的设置都是为了一些插入。
我创建第一个ID有:
insert into id_generator(description) values("parentID");
然后我要添加父:
insert into parent(id, /*content*/) values(1, /*content*/);
也按预期工作,所以我需要插入一个child
为parent
:
insert into id_generator(description) values("childID");
insert into child(id,id_parent)values(2,1);
在这里我得到错误消息“ERROR:dupli美食键值违反唯一约束详细信息:按键(id_parent)=(1)媒体链接存在”
编辑:
\d child;
Tabelle ╗public.child½
Spalte | Typ | Attribute
-------------------+---------+-----------
id | integer | not null
id_parent | integer |
Indexe:
"child_pkey" PRIMARY KEY, btree (id)Fremdschlⁿssel-Constraints:
"child_id_parent_fkey" FOREIGN KEY (id_parent) REFERENCES parent(id)
"child_id_generator_fkey" FOREIGN KEY (id) REFERENCES id_generator(id)
我怎么能解决?
显示用'=>子表结构\ d child'和'从child' – 2013-03-04 11:30:11
已完成选择* ; '孩子'是空的 – Zaiborg 2013-03-04 12:47:41