PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 9. 函数和操作符 | 下一页

# 9.27. 触发器函数

当前PostgreSQL提供一个内建的触发器函数，`suppress_redundant_updates_trigger`， 其将阻止任何不会实际更改行中的数据发生，相反不管数据是否已经改变始终执行的更新这种不正常的行为。 （这是正常的行为，使得更新运行速度更快，因为不需要检查，并在某些情况下也是有用的。）

理想的情况下，你通常应该避免运行实际上并没有改变记录中的数据的更新。 冗余更新会花费大量不必要的时间，尤其是如果有大量索引要改变， 并且最终将不得不清空死行中的空间。然而，在客户端代码检测这种情况并不总是容易的或甚至可能的， 而写表达式以检测到它们容易产生错误。另一种方法是使用`suppress_redundant_updates_trigger`， 它可以跳过不改变数据的更新。不过你应该小心使用这个命令。触发器为每条记录花费小但有意义的时间， 所以如果更新实际改变会影响大多数记录，那么此触发器的使用将实际上使更新运行得更慢。

`suppress_redundant_updates_trigger`函数可以添加到一个表：

    CREATE TRIGGER z_min_update
    BEFORE UPDATE ON tablename
    FOR EACH ROW EXECUTE PROCEDURE suppress_redundant_updates_trigger();

在大多数情况下，你可能想要在每行的后面触发这个触发器。记住触发器是以名字的顺序触发的， 你应该在表中你有的任何其他触发器后面选择一个触发器名字。

更多有关创建触发器的信息请参阅CREATE TRIGGER。

上一页 | 起始页 | 下一页
系统管理函数 | 上一级 | 事件触发函数