2013-03-04 112 views
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*/); 

也按预期工作,所以我需要插入一个childparent

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) 

我怎么能解决?

+0

显示用'=>子表结构\ d child'和'从child' – 2013-03-04 11:30:11

+0

已完成选择* ; '孩子'是空的 – Zaiborg 2013-03-04 12:47:41

回答

1

好吧,我很抱歉,问题解决了,有INSERT语句的双重呼唤:捂脸: