PostgreSQL:用参数调用函数的触发器

时间:2015-06-22 14:06:48

标签: postgresql triggers plpgsql

在PostgreSQL中,我正在尝试创建一个将参数传递给函数的触发器,但看起来这个操作会查找其签名为零参数的函数:

ERROR:  function create_rec_if_needed() does not exist: 
      CREATE TRIGGER after_update_winks AFTER UPDATE ON winks
      FOR EACH ROW
      WHEN (NEW.counter > 3)
      EXECUTE PROCEDURE create_rec_if_needed(NEW.id, 'Wink')

当我列出现存的函数时,我可以看到我的2参数函数。这是\df

的输出
                                                          List of functions
 Schema |          Name           |     Result data type      |                          Argument data types    
--------+-------------------------+---------------------------+-------------------------------------------------
 public | create_rec_if_needed    | void                      | rec_id integer, rec_type text         

任何人都可以了解为什么我的触发器没有使用现有功能吗?我应该使用另一种设计来实现我的目标吗?我的目标是让多个表具有一个调用函数create_rec_if_needed的触发器,并且在每种情况下,触发器必须提供记录的id和特定于表的字符串。

1 个答案:

答案 0 :(得分:2)

  

使用CREATE FUNCTION命令创建触发器过程,   将它声明为没有参数和返回类型的函数   触发。

您可以通过TG_ARGV使用传递给触发器功能的参数,例如TG_TABLE_NAME - 导致触发器调用的表的名称。 40.9. Trigger Procedures