【发布时间】:2014-02-17 16:42:07
【问题描述】:
您好,我想创建一个在 pg_catalog 中创建表的函数,例如:
CREATE OR REPLACE FUNCTION foo() RETURNS void AS $$
DECLARE
BEGIN
EXECUTE 'CREATE TABLE pg_catalog.tab(a integer)';
RETURN;
END;
$$ LANGUAGE plpgsql;
错误:创建“pg_catalog.tab”的权限被拒绝
详细信息:当前不允许修改系统目录。
我编辑我的问题以添加更多细节:
真正的我想创建一个在删除表时启动的函数。我认为唯一的方法是在表 pg_catalog.tables 上创建触发器:
CREATE OR REPLACE FUNCTION a() RETURNS void AS $$
DECLARE
BEGIN
EXECUTE 'CREATE TRIGGER "tt_drop" BEFORE DELETE ON pg_catalog.pg_tables EXECUTE PROCEDURE public.b()';
RETURN;
END;
$$ LANGUAGE plpgsql;
在函数 b 中,我想在删除表之前对其进行一些操作...
【问题讨论】:
标签: postgresql plpgsql