postgresql - 在什么情况下会出现错误 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
解决方案
在 IRC 上询问并检查了代码后,看起来 23001 目前在标准 postgresql 中的任何地方都没有出现,尽管它可以由存储的过程等生成。
推荐阅读
- python - 有没有更好的方法来获得熊猫连续的年月值?
- php - 在 Docker 容器中坚持 Symfony 升级
- graphdb - 如何处理 java.io.IOException: GraphDB Workbench 中的断管?
- javascript - 观察者不适用于递归项目
- r - R:如何将新数据框合并到列表中的其他几个数据框
- grails - Grails - 读取 resources.xml 中的配置属性
- git - Github 工作流事件触发器同步不起作用?
- crystal-reports - Crystal Reports 8.5 SetDataSource 生成空错误信息
- javascript - 为什么即使我将数组传递给 useState,我的状态数组也不会更新?
- python - 使用 python 和 keras 对 2 个以上的类进行文本分类