【问题标题】:Get Table Name in Event Trigger在事件触发器中获取表名
【发布时间】:2017-02-11 12:11:24
【问题描述】:

我有一个在创建、更改和删除表时执行的事件触发器。

create event trigger CustomizeTable
   on ddl_command_end
   when tag in ( 'create table', 'alter table', 'drop table' )
   execute procedure CustomizeTable();

在过程中,我想在新创建的表上创建一个触发器。

create or replace function CustomizeTable() returns event_trigger as 
$$
begin
      EXECUTE 'create trigger DoAudit after update on XXXXXX...
end;
$$
language plpgsql;

如何获取事件触发器中的表名?

我尝试按照here 的说明使用 TG_TABLE_NAME,但似乎这只适用于非事件触发器。

【问题讨论】:

    标签: postgresql postgresql-9.6


    【解决方案1】:

    您必须使用the documentation 中描述的事件触发信息函数。

    例如,要获取新创建的表的名称,请使用

    SELECT objid::regclass
    FROM pg_event_trigger_ddl_commands();
    

    【讨论】:

    • 哦,我在那个站点的 9.4 文档中,刚刚看到它从 9.5 开始得到扩展。谢谢你。
    • @SergiyMatvienko 我听到了,我添加了一个示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2023-01-05
    • 2012-02-08
    相关资源
    最近更新 更多