我有一个触发器函数,在更新 COLUMN A 时由多个表调用,以便可以根据来自不同函数的值更新 COLUMN B。(解释起来比实际上更复杂)。触发器函数接受 col_a 和 col_b,因为它们对于不同的表是不同的。
IF needs_updated THEN
sql = format('($1).%2$s = dbo.foo(($1).%1$s); ', col_a, col_b);
EXECUTE sql USING NEW;
END IF;
当我尝试运行上述内容时,格式会生成以下 sql:
($1).NameText = dbo.foo(($1).Name);
当我使用 USING 执行 SQL 时,我期望会发生这样的事情(在没有动态 sql 的情况下直接执行时有效):
NEW.NameText = dbo.foo(NEW.Name);
相反,我得到:
[42601] 错误:“$1”处或附近的语法错误
如何动态更新记录/复合类型 NEW 上的列?