postgresql - 跟踪 Postgres 中一行的最后修改时间戳
问题描述
在 Postgres 中,我想存储表的最后更新/插入时间。Microsoft SQL Server 提供了一种timestamp
由数据库自动维护的类型。
但是timestamp
在 Postgres 中的工作方式不同,它不会自动更新,并且该列始终为空。
解决方案
在 postgresql 中,您必须使用触发器。您可以按照此链接了解如何操作https://x-team.com/blog/automatic-timestamps-with-postgresql/。
要总结文章,您可以执行以下操作:
创建将被触发的 Pl/Pgsql 函数:
CREATE OR REPLACE FUNCTION trigger_set_timestamp() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = NOW(); RETURN NEW; END; $$ LANGUAGE plpgsql;
创建你的表
CREATE TABLE mytable ( id SERIAL NOT NULL PRIMARY KEY, content TEXT, updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() );
最后添加触发器:
CREATE TRIGGER set_timestamp BEFORE UPDATE ON mytable FOR EACH ROW EXECUTE FUNCTION trigger_set_timestamp();
您可以在此处找到有关该问题的更多信息:https ://dba.stackexchange.com/questions/58214/getting-last-modification-date-of-a-postgresql-database-table
希望它会帮助你。
推荐阅读
- postgresql - 如何从 Heroku PostgreSQL 获取数据库模式?
- excel - 插入公式后的宏延迟问题 - Excel
- regex - 准确匹配 Google Apps 脚本中的两个连续空格
- python - 从测试 PC 移动到生产服务器/数据库后,Django 迁移不适用
- javascript - 使用新的 React 钩子 useContext 的正确方法是什么?
- laravel - 在控制器中传递多个变量
- kdb - 回调 kdb 中的表更新
- css - 谷歌字体显示不一致
- python - 如何在python中找到一组自主方程的临界点、雅可比矩阵和特征值?如何获得他们的相空间图?
- sql - PostgreSQL 根据表字段生成月份和年份系列,如果给定月份没有数据,则用空值填充