【发布时间】:2016-10-08 20:15:16
【问题描述】:
我正在尝试创建一个event trigger,每当创建表时执行。
发生这种情况时,我想将创建的表的名称插入到表中(其中有 2 列 id 和 tablename )。阅读文档我无法找到如何获取表名。
到目前为止,我有这个:
CREATE OR REPLACE FUNCTION insert_layer()
RETURNS event_trigger
AS $$
DECLARE r RECORD;
BEGIN
RAISE NOTICE 'event for % ', tg_tag;
-- I would like to execute this
--EXECUTE format('INSERT INTO "public.Layers"(name) VALUES(' || tableNameHere || ')') INTO result;
END;
$$
LANGUAGE plpgsql;
CREATE EVENT TRIGGER insert_layer_event ON ddl_command_start
WHEN TAG IN ('CREATE TABLE')
EXECUTE PROCEDURE insert_layer();
【问题讨论】:
-
对于
ddl_command_end上的触发器,您可以使用pg_event_trigger_ddl_commandsfunction:RAISE INFO 'Table: %', (pg_event_trigger_ddl_commands()).object_identity; -
非常感谢!!如果你写一个答案,我会接受! =)
标签: database postgresql event-triggers