我有一个触发器函数,当COLUMN A更新时由几个表调用,以便可以根据不同函数的值更新COLUMN B. (解释比实际更复杂)。触发器函数接受col_a和col_b,因为它们对于不同的表是不同的。如何在触发程序中使用动态sql设置复合类型列
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);
当我执行与我期待这样的事情发生(当直线执行其运作使用SQL时没有动态SQL):
NEW.NameText = dbo.foo(NEW.Name);
相反,我得到:
[42601] ERROR: syntax error at or near "$1"
如何动态更新记录/复合类型NEW上的列?
Ildar,谢谢你的回应。不幸的是,'needs_updated''背后有逻辑,每个表(和指定的列)都会重复使用''needs_updated''',那么我可能会为每个表创建单独的触发函数。我希望能够减少重复的逻辑。 – Airn5475