试图创建一个触发器,该触发器应该使用NEW和OLD,并接受表名作为参数,但总是得到错误:
不能直接从SQL或PL/pgSQL调用触发器函数。所以这条线是错误的
EXECUTE function_update(table_name );
原因有三:
EXECUTE
将包含SQL函数的字符串作为参数。因此PostgreSQL希望调用您的函数并将结果作为SQL语句执行。你的意思是PERFORM function_update(table_name);
,但由于以下原因,这也是错误的。您为函数提供了一个参数,但定义时没有参数。这会导致出现错误消息。
您正试图调用SQL语句中的触发器函数。这将永远失败。
您不应该将function_update
定义为触发器函数,而是定义为可以从SQL调用的普通函数。