首页 > 解决方案 > 替换列的值不应更新 PostgreSQL 中的 last_modified 时间

问题描述

我必须将某些列值替换为其他值,但它不应该更新last_modified

id  name        last_modified
1   from    10.01.2019 08:54:08
2   from    10.01.2019 08:54:08
3   from    10.01.2019 08:54:08
4   Ami     10.01.2019 08:54:08

id  name        last_modified
1   to      10.01.2019 08:54:08
2   to      10.01.2019 08:54:08
3   to      10.01.2019 08:54:08
4   Ami     10.01.2019 08:54:08

标签: sqlpostgresqlsql-update

解决方案


假设您在设置的表上有一个触发器last_modified,您可以通过两种方式阻止其执行:

  • 禁用触发器:

    ALTER TABLE mytable DISABLE TRIGGER modified_trig;
    

    更新完成后,重新启用它:

    ALTER TABLE mytable ENABLE TRIGGER modified_trig;
    

    为避免在运行更新时同时修改数据,请ALTER TABLE在单个事务中同时运行 s 和更新。

  • 确保在运行更新时根本不会触发(正常)触发器。

    这可以通过运行来完成

    SET session_replication_role=replica;
    

    为此,您需要超级用户权限。


推荐阅读