在表上插入或更新违反外键约束

时间:2010-03-15 03:19:43

标签: sql database postgresql

我有两个表: entitytype 项目。以下是create table语句:

Create table project ( 
pname varchar(20) not null, 
primary key(pname)
);

create table entitytype( 
entityname varchar(20) not null, 
toppos char(100), 
leftpos char(100), 
pname varchar(20) not null, 
primary key(entityname), 
foreign key(pname) references project(pname) on delete cascade on update cascade
);

当我尝试将任何值插入 entitytype 表时,出现以下错误:

ERROR: insert or update on table "entitytype" violates foreign key constraint "entitytype_pname_fkey"
  Detail: Key (pname)=(494) is not present in table "project".

有人能说清楚我做错了吗?

3 个答案:

答案 0 :(得分:10)

错误消息表示您正在尝试添加没有相应项目条目的entityType。 (我不知道你的域名或者你想要实现的目标,但这种架构设计对我来说是错误的......)

答案 1 :(得分:3)

你是否在pname为(在你的例子中)494的表项目中有记录?

关键关系表示实体表中不允许使用pname,除非它与项目表中的pname匹配。

答案 2 :(得分:0)

当您的架构错误时会发生此错误。 提示:再次检查您的外键分配