百科 / 错误代码 / Class 39 外部例程调用异常
39P03 event_trigger_protocol_violated
ERROR 源码确认 参考 未实测
- 条件名
event_trigger_protocol_violated- 宏名称
ERRCODE_E_R_I_E_EVENT_TRIGGER_PROTOCOL_VIOLATED- 启用版本
- 9.5
- 状态
- 活跃
版本覆盖
速览
39P03 是 event_trigger_protocol_violated。固定核心源码确认多个 event-trigger helper 会检查当前事件上下文。
含义
调用 pg_event_trigger_dropped_objects()、table-rewrite helper 或 DDL helper 时,如果当前函数不是源码要求的 sql_drop、table_rewrite 或 event trigger function,就会报告该条件。固定报文中的 %s 会带出具体函数名;这属于调用上下文错误,不是对象不存在。
报文模板
源码里的格式串,不是某一次运行的输出。%s 之类是占位符,实际报文会填入对象名与取值。适用范围一栏是核验时留下的原始英文记录,未经翻译。
%s can only be called in a sql_drop event trigger function
%s can only be called in a table_rewrite event trigger function
%s can only be called in an event trigger function
诊断
先保留完整 message,确认被调用的 helper 以及实际 event trigger 类型。sql_drop、table_rewrite 和一般 event-trigger 上下文是不同边界;不要把这类错误解释成对象不存在或普通函数返回错误。
处置
把 helper 调用放到匹配的 event trigger function 和事件中,或移除不适用的调用。核对部署版本的 event-trigger 定义与调用顺序后再重新执行 DDL;单纯重试原 DDL 不会改变当前上下文。
版本
锁定目录从 9.5.0 记录该条件,并在 9.5 之后的正式快照及 19beta3 中出现;固定报告该码的路径 为 PostgreSQL 18.6。
来源
- 上游源码 src/backend/utils/errcodes.txt 第 313 行
- 上游源码 src/backend/commands/event_trigger.c 第 1542–1545 行
- 核验材料 raw/calls/REL_18_6.jsonl
证据
断言
每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。
-
39P03 is event_trigger_protocol_violated in Class 39.
-
The core event-trigger functions reject calls outside their required sql_drop, table_rewrite, or event-trigger context with this code.
-
The message names the required event-trigger function context, so the failing boundary is call context rather than object existence alone.
同类错误代码
Class 39 外部例程调用异常 下的其他成员。