40.3. 用 C 编写事件触发函数

本节描述事件触发功能的接口的低级详细信息。仅在使用 C 编写事件触发功能时才需要此信息。如果您使用的是高级语言,则将为您处理这些详细信息。在大多数情况下,您应该在使用 C 编写事件触发器之前考虑使用过程语言。每种过程语言的文档都说明了如何用该语言编写事件触发器。

事件触发功能必须使用“版本 1”功能 Management 器界面。

事件触发 Management 器调用函数时,不会传递任何常规参数,而是会传递指向EventTriggerData结构的“上下文”指针。 C 函数可以通过执行宏来检查是否从事件触发器 Management 器中调用了它们:

CALLED_AS_EVENT_TRIGGER(fcinfo)

扩展为:

((fcinfo)->context != NULL && IsA((fcinfo)->context, EventTriggerData))

如果返回 true,则可以安全地将fcinfo->context转换为EventTriggerData *并使用指向EventTriggerData的结构。该函数必须不得更改EventTriggerData结构或其指向的任何数据。

struct EventTriggerDatacommands/event_trigger.h中定义:

typedef struct EventTriggerData
{
    NodeTag     type;
    const char *event;      /* event name */
    Node       *parsetree;  /* parse tree */
    const char *tag;        /* command tag */
} EventTriggerData;

成员定义如下:

事件触发函数必须返回NULL指针(不是 SQL 空值,即,不要设置* isNull * true)。

上一章 首页 下一章