我正在使用plpgsql在Postgresql中编写记录更新的触发器。在触发器中,我正在访问一个值列值,如下所示
NEW.mobileno -- This is usual way.
现在我的要求是,我将在一个名为dyn_columnname的变量中使用'mobileno'文本
使用这个NEW和dyn_columnname,我应该像NEW.mobileno值一样访问。
我怎样才能做到这一点..?
答案 0 :(得分:0)
您需要使用动态sql:
execute _dyn_sql_string into _dyn_col_value using _dyn_col_name;
通常最好避免以这种情况开始,这就是说,因为生成的查询计划无法像非动态触发器中的计划一样高效缓存。
如果您只是遍历列,请考虑使用动态sql来处理此问题,而不是编写动态触发器函数,而是编写创建或替换非动态触发器函数的动态函数。
如果您因某种业务逻辑而使用此功能,请考虑重新访问您的架构以完全避免这种情况。