我正在尝试在“centresdevote”表中添加“prefectures”表的外键。但是我在尝试将外键添加到“centresdevote”表时遇到了这个错误。顺便说一下,将外键添加到我的数据库中的其他表没有问题,我似乎无法弄清楚为什么这个错误只针对这个弹出。我正在使用 Postgresql 9.2 并手动为其他表添加了外键。我也尝试使用如下 SQL 代码:
ALTER TABLE centresdevote
ADD CONSTRAINT objectid
FOREIGN KEY (objectid) REFERENCES prefectures (objectid);
这是错误
ERROR: insert or update on table "centresdevote " violates foreign key constraint "objectid"
DETAIL: Key (objectid)=(10) is not present in table "prefectures".
这是两个表的结构:
“都道府县”表:
objectid integer NOT NULL,
nomprefecture character varying(70),
shape st_geometry,
respcommissionrecensement character varying(70),
CONSTRAINT prefectures_pkey PRIMARY KEY (objectid)
“centresdevote”表:
objectid integer NOT NULL,
arabicname character varying(70),
frenchname character varying(70),
shape st_point,
CONSTRAINT centresdevote_pkey PRIMARY KEY (objectid)
提前致谢!
在表中
centresdevote
,您有一行的值为objectid
10。当您尝试创建 a时,会检查表中的列中是否存在与 中的所有行FOREIGN KEY CONSTRAINT
匹配的值。里面没有.objectid
prefectures
centresdevote
prefectures
objectid = 10
我建议您阅读PostgreSQL 文档 - 5.3.5。外键和关于外键的 W3Schools 页面。外键的全部意义在于它们限制了您可以插入到字段中的内容。来自 PostgreSQL 文档:
添加外键不是强制性的,您可以在没有它的情况下进行各种查询。