PostgreSQL - 确定更新了哪些列

标签 postgresql triggers plpgsql

我有一个包含许多列的表,其中一列是 lastUpdate 列。 我正在为 Postgres 9.1 在 plpgsql 中编写一个触发器,它应该在对记录进行更新时为 lasUpdate 设置一个值。

挑战在于从该触发器中排除一些预定义的列;这意味着,更新那些特定列不应影响记录的 lastUpdate 值。

有什么建议吗?

最佳答案

在 PostgreSQL 中,您可以使用 OLD 访问以前的值。和新的使用新的。别名。 the docs中甚至有一个具体的例子满足您的需求:

CREATE TRIGGER check_update
BEFORE UPDATE ON accounts
FOR EACH ROW
WHEN (OLD.balance IS DISTINCT FROM NEW.balance)
EXECUTE PROCEDURE check_account_update();

关于PostgreSQL - 确定更新了哪些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18044306/

相关文章:

triggers - TeamCity 完成构建触发器未触发

sql - 无法从 plpgsql 函数内的动态命名临时表运行 'select into'

arrays - for 循环中的 PL/pgSQL "Malformed array literal"错误

从 C# 调用时,PostgreSQL 函数返回类型不存在

java - Hibernate:在调用另一个方法并将其转换为字符串后将 List<String> 插入数据库:将整个列表保存在单个单元格中

java - 表数据覆盖

node.js - node-postgres 上的 postgres 复合类型

php - 使用带有 pg_update() PHP 的事务

postgresql - 创建触发器会在 PostgreSQL 中出现 "function does not exist"错误

sql - Oracle 中插入后触发插入 sysdate