Postgresql 我可以在postgres中获取所有外键冲突吗?

Postgresql 我可以在postgres中获取所有外键冲突吗?,postgresql,postgresql-9.2,Postgresql,Postgresql 9.2,我有一个表,其中有两列带有外键约束,例如: CREATE TABLE example ( id integer PRIMARY KEY, f1 integer REFERENCES example(id), f2 integer REFERENCES example(id) ); 如果我随后执行插入: insert into example (id, f1, f2) values (1, 2, 2); 很明显,我会得到一个错误,但仅限于第一个失败的约束: ERROR: inse

我有一个表,其中有两列带有外键约束,例如:

CREATE TABLE example
(
  id integer PRIMARY KEY,
  f1 integer REFERENCES example(id),
  f2 integer REFERENCES example(id)
);
如果我随后执行插入:

insert into example (id, f1, f2) values (1, 2, 2);
很明显,我会得到一个错误,但仅限于第一个失败的约束:

ERROR:  insert or update on table "example" violates foreign key constraint "example_f1_fkey"
DETAIL:  Key (f1)=(2) is not present in table "example".
我的问题是:是否可以配置postgres,使其返回一个错误,同时返回失败的键约束的

非常感谢, 本

是否可以配置postgres,使其返回一个包含两个失败键约束的错误

不,不是。第一个FK故障中止事务,因此不会运行进一步的检查

能够捕获所有违规行为是很有趣的,但在当前版本中无法做到这一点(至少在9.3中是这样)


为此,您需要能够有选择地将
检查
约束、外键约束检查等的
错误
级别报告更改为
警告
,该警告还设置了一个标志,该标志将强制事务在当前语句结束时中止。从技术上讲,这可能不太难做到,但肯定会涉及到大量PostgreSQL源代码的工作。

非常感谢您的回答。