Postgresql 获取plpgsgl异常处理程序中违反的fk的名称

Postgresql 获取plpgsgl异常处理程序中违反的fk的名称,postgresql,exception,exception-handling,plpgsql,Postgresql,Exception,Exception Handling,Plpgsql,我编写了一个plpgsql函数来向表中插入一些数据。在表中插入my违反了两个外键约束之一。 我可以使用“WHEN foreign_key_violation THEN”捕获异常,但如何找出违反了哪个FK?plpgsql异常处理程序中是否有包含此信息的可访问字段?从9.3版开始,您可以使用CONSTRAINT_NAME查看违反了哪个外键 手册中的详细信息:为什么不在插入之前检查约束?因为在我看来,如果rdbms在插入后再次检查,检查引用完整性是毫无意义的-我需要做更多的工作,dbms需要执行更多的

我编写了一个plpgsql函数来向表中插入一些数据。在表中插入my违反了两个外键约束之一。
我可以使用“WHEN foreign_key_violation THEN”捕获异常,但如何找出违反了哪个FK?plpgsql异常处理程序中是否有包含此信息的可访问字段?

从9.3版开始,您可以使用CONSTRAINT_NAME查看违反了哪个外键


手册中的详细信息:

为什么不在插入之前检查约束?因为在我看来,如果rdbms在插入后再次检查,检查引用完整性是毫无意义的-我需要做更多的工作,dbms需要执行更多的工作,它增加了冗余性,随着时间的推移,冗余性可能会失去同步谢谢你-我必须找出正确的语法-给未来的读者:当外键违反时,然后获取堆栈诊断l\u constraint=constraint\u NAME;如果(l_constraint='name'),则引发'some message';