postgresql - 在 PostgreSQL 触发器中访问动态列值

标签 postgresql triggers

我正在使用 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;

http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

通常最好避免以这种情况结束,也就是说,因为生成的查询计划不能像来自非动态触发器的计划那样有效地缓存。

如果您只是简单地遍历列,请考虑使用动态 sql 来解决这个问题,而不是编写动态触发函数,而是编写一个创建或替换非动态触发函数的动态函数。

如果您是出于某种业务逻辑而使用它,请考虑重新访问您的架构以完全避免这种情况。

关于postgresql - 在 PostgreSQL 触发器中访问动态列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20739623/

相关文章:

mysql - MySQL 触发器未正确计算总和

postgresql - 关键字USING在PostgreSQL中如何工作?

sql - 在大表上使用 OFFSET 优化查询

sql - 如何在 PostgreSQL 中使用 `SELECT` 获取当前数据库和用户名?

php - SQL - 根据另一个表中的行数删除行

database - 无法在 PostgreSQL 中更新 View "routines"

c - 来自 PSQL 触发器的提示

postgresql - 每个更新具有不同随机值的 PSQL 行

PostgreSQL 交叉表查询从辅助查询中提取列

.net - 在样式中混合 MultiBinding 转换器和触发器时出现问题