【问题标题】:insert or update on table violates foreign key constraint在表上插入或更新违反外键约束
【发布时间】:2011-01-27 13:03:13
【问题描述】:

我有两个表:entitytype 和 project。以下是创建表语句:

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".

谁能解释我做错了什么?

【问题讨论】:

    标签: sql database postgresql


    【解决方案1】:

    您在表项目中没有 pname 为(在您的示例中)494 的记录吗?

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

    【讨论】:

      【解决方案2】:

      错误消息意味着您正在尝试添加一个没有相应项目条目的实体类型。 (我不知道您的域或您想要实现的目标,但这种架构设计在我看来是错误的......)

      【讨论】:

      • 嘿,非常感谢,我知道我出了什么问题。输入数据时,我以错误的顺序插入。
      【解决方案3】:

      我也遇到了同样的问题(InnerException = {"23503: insert or update on table "table-name" 违反了外键约束 "tabename""})

      如果表的更新版本高于入口端版本,则可能会出现此问题。因为可能会在更新后的版本表中添加其他列。

      • 正确检查您的条目。
      • 检查所有可用列的表(包版本)。

      【讨论】:

        猜你喜欢
        • 2020-12-02
        • 2015-08-19
        • 2020-09-07
        • 2020-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-06
        • 2019-06-16
        相关资源
        最近更新 更多