我想知道当我创建一个表时,PostgreSQL系统表上的触发器是否可以执行
我需要在数据库的每个表上添加2个函数,我想动态地
感谢
这可以通过事件触发器完成:
CREATE OR REPLACE FUNCTION on_create_table_func()
RETURNS event_trigger AS $$
BEGIN
-- your code here
END
$$
LANGUAGE plpgsql;
CREATE EVENT TRIGGER
on_create_table ON ddl_command_end
WHEN TAG IN ('CREATE TABLE')
EXECUTE PROCEDURE on_create_table_func();
请注意,无法直接对新创建的表执行任何查询,甚至无法获取其名称。我不知道你说的"在每个表上添加2个函数"是什么意思,因为函数不属于特定的表,但如果你需要执行特定于新表的操作,这可能不适合你。
它从9.3版本开始实现https://www.postgresql.org/docs/current/event-trigger-definition.html
您正在寻找"DDL触发器"。它们没有在PostgreSQL中实现。也不能将触发器添加到系统表中。看看这个论坛条目:
添加ddl审核触发器