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

PostgreSQL: trigger to call function with parameters

在 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         

谁能解释一下为什么我的触发器没有使用现有功能?我应该使用替代设计来实现我的目标吗?我的目标是让多个 table 有一个调用函数 create_rec_if_needed 的触发器,并且在每种情况下,触发器都必须提供记录的 ID 和特定于 table 的字符串。

A trigger procedure is created with the CREATE FUNCTION command, declaring it as a function with no arguments and a return type of trigger.

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