PostgreSQL之时间戳自动更新
2023-03-09 22:30:15 时间
问题描述
PostgreSQL执行Insert语句时,自动填入时间的功能可以在创建表时实现,但更新表时时间戳不会自动自动更新。
在mysql中可以在创建表时定义自动更新字段,比如 :
- create table ab (
- id int,
- changetimestamp timestamp
- NOT NULL
- default CURRENT_TIMESTAMP
- on update CURRENT_TIMESTAMP
- );
那PostgreSQL中怎么操作呢?
解决方案
通过触发器实现,具体如下:
- create or replace function upd_timestamp() returns trigger as
- $$
- begin
- new.modified = current_timestamp;
- return new;
- end
- $$
- language plpgsql;
- drop table if exists ts;
- create table ts (
- id bigserial primary key,
- tradeid integer ,
- email varchar(50),
- num integer,
- modified timestamp default current_timestamp
- );
- create trigger t_name before update on ts for each row execute procedure upd_timestamp();
测试代码:
- insert into ts (tradeid,email,num) values (1223,'mike_zhang@live.com',1);
- update ts set email='Mike_Zhang@live' where tradeid = 1223 ;
- create unique index ts_tradeid_idx on ts(tradeid);
- insert into ts(tradeid,email,num) values (1223,'Mike_Zhang@live.com',2) on conflict(tradeid) do update
- set email = excluded.email,num=excluded.num;
- select * from ts;
- -- delete from ts;
好,就这些了,希望对你有帮助。
相关文章
- 数据孤岛是业务效率的无声杀手
- 2023展望:新的一年将给大数据分析领域带来什么?
- 阿里云ADB基于Hudi构建Lakehouse的实践
- 大数据在医疗保健领域的使用案例
- 微软增加说明:KB5021751 更新扫描已经 / 即将过时 Office 过程中不会触碰用户隐私
- 2022 Gartner全球云数据库管理系统魔力象限发布 腾讯云数据库入选
- 场景化、重实操,分享一个实时数仓实践案例
- Arctic的湖仓一体践行之路
- 分布式计算MapReduce究竟是怎么一回事?
- 淘系数据模型治理优秀实践
- 大数据分析对医疗保健的影响
- 当我们说大数据Hadoop,究竟在说什么?
- 2022年及以后大数据的五个发展趋势
- 网易严选离线数仓治理实践
- 2023 年数据治理趋势
- 一份“靠谱”的年度经营计划,你学会了吗?
- 漫谈对大数据的思考
- 测试一下,读懂数据的能力,你有吗?
- 用艺术的眼光探索数据之美
- 聊聊数据分析成果如何落地