首页 文章

将单个触发器过程应用于许多不同的表

提问于
浏览
0

在我的PostgreSQL 9.1数据库中,我有多个表和一个触发器功能 .

现在我通过使用该触发器函数为每个表创建触发器 .

这种方法工作正常 . 我的老板要求我通过重复使用该触发功能来共同创建触发器(只有一次) . 一个触发器函数应该被我的数据库中的所有表使用 .

2 回答

  • 2

    您可以在PostgreSQL的Audit Trigger示例中找到使用PL / PgSQL创建动态SQL触发器的示例 . 相同的方法适用于任何其他DDL .

    请参见函数 audit.audit_table 并在那里使用 formatEXECUTE .

    也就是说,需要在程序上创建表可能(但并非总是)是可疑模式设计的标志 .

    动态SQL创建表的简单示例:

    CREATE OR REPLACE FUNCTION demo_dynamic_table(tablename text) RETURNS void AS $$                                                                                      
    BEGIN                                                                                                                                                                          
        EXECUTE format('CREATE TABLE %I (id serial primary key);', tablename);
    END;
    $$ LANGUAGE plpgsql;
    

    相同的方法适用于触发器创建等 .

  • 0

    您可以为表创建创建PL / pgSQL过程并在其中移动触发器创建代码

相关问题