Postgres触发器函数带有从另一个触发器函数调用的param和OLD/NEW



试图创建一个触发器,该触发器应该使用NEW和OLD,并接受表名作为参数,但总是得到错误:

不能直接从SQL或PL/pgSQL调用触发器函数。所以这条线是错误的

EXECUTE function_update(table_name );

原因有三:

  • EXECUTE将包含SQL函数的字符串作为参数。因此PostgreSQL希望调用您的函数并将结果作为SQL语句执行。你的意思是PERFORM function_update(table_name);,但由于以下原因,这也是错误的。

  • 您为函数提供了一个参数,但定义时没有参数。这会导致出现错误消息。

  • 您正试图调用SQL语句中的触发器函数。这将永远失败。

您不应该将function_update定义为触发器函数,而是定义为可以从SQL调用的普通函数。

最新更新