sql - 替换列的值不应更新 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
解决方案
假设您在设置的表上有一个触发器last_modified
,您可以通过两种方式阻止其执行:
禁用触发器:
ALTER TABLE mytable DISABLE TRIGGER modified_trig;
更新完成后,重新启用它:
ALTER TABLE mytable ENABLE TRIGGER modified_trig;
为避免在运行更新时同时修改数据,请
ALTER TABLE
在单个事务中同时运行 s 和更新。确保在运行更新时根本不会触发(正常)触发器。
这可以通过运行来完成
SET session_replication_role=replica;
为此,您需要超级用户权限。
推荐阅读
- .net - Dockerfile 在本地构建,但在 Azure Devops 管道中的 COPY 步骤失败
- python-3.x - 使用 Drive API V3 使用 Python 在 Google Drive 上上传更新的文件不起作用
- android - 在颤动中添加底部导航栏后,我体内的小部件停止工作
- android - Android Popupwindow 显示两次弹出窗口
- bash - AWK:以从列中获得的结果的排序顺序打印文件的数据
- javascript - 加载图像标签的href时触发加载事件
- ios - 当您离开视图时如何在 Swift 中停用 AVPlayer
- keyboard - 有没有办法在基于 DOS 的程序中读取键盘修改键,例如 ALT 或 CTRL?
- c++ - 为什么不显示 sfml 图像?
- ansible - 如何调试 Ansible when_failed 子句