首页 > 解决方案 > 在什么情况下会出现错误 23001 (restrict_violation)?

问题描述

从名字上看,我认为“ON DELETE RESTRICT”会触发它,但这会触发错误 23503(违反 FK):

 create table a (id serial primary key);
 insert into a default values;
 create table b (id serial primary key, a_id integer references a (id) not null);
 insert into b (a_id) values (1);
 delete from a where id=1;


ERROR:  23503: update or delete on table "a" violates foreign key constraint "b_a_id_fkey" on table "b"
DETAIL:  Key (id)=(1) is still referenced from table "b".
SCHEMA NAME:  public
TABLE NAME:  b
CONSTRAINT NAME:  b_a_id_fkey
LOCATION:  ri_ReportViolation, ri_triggers.c:2797

标签: postgresql

解决方案


在 IRC 上询问并检查了代码后,看起来 23001 目前在标准 postgresql 中的任何地方都没有出现,尽管它可以由存储的过程等生成。


推荐阅读