我正在使用 plpgsql 在 Postgresql 中编写记录更新触发器。在触发器中,我正在访问一个值列值,如下所示
NEW.mobileno -- This is usual way.
现在我的要求是,我将在一个名为 dyn_columnname 的变量中包含“mobileno”文本
使用这个 NEW 和 dyn_columnname ,我应该像 NEW.mobileno 值一样访问。
我怎样才能做到这一点......?
最佳答案
需要使用动态sql:
execute _dyn_sql_string into _dyn_col_value using _dyn_col_name;
通常最好避免以这种情况结束,也就是说,因为生成的查询计划不能像来自非动态触发器的计划那样有效地缓存。
如果您只是简单地遍历列,请考虑使用动态 sql 来解决这个问题,而不是编写动态触发函数,而是编写一个创建或替换非动态触发函数的动态函数。
如果您是出于某种业务逻辑而使用它,请考虑重新访问您的架构以完全避免这种情况。
关于postgresql - 在 PostgreSQL 触发器中访问动态列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20739623/