时间:2021-05-24
PostgreSQL更新表时时间戳不会自动更新的解决方法,具体如下
操作系统:CentOS7.3.1611_x64
PostgreSQL版本:9.6
问题描述
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 updateset email = excluded.email,num=excluded.num;select * from ts;-- delete from ts;好,就这些了,希望对你有帮助。
本文github地址。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
以表格数据自动更新为例,一般数值型的数据是没有办法自动更新的,excel表自动更新的方法,必须采用函数或者是公式的方式才可能进行自动更新。MicrosoftEx
Win7不能自动更新的原因和解决方法?原因:对于windows7中的自动更新,如果不出现时,主要是要检查你的对更新的设置的改变选项。可以从两方面着手解决。解决方
电视机连不上网络,手机可以连上解决方法如下: 1、检查Wi-Fi的密码;当网络进行调整时,机顶盒、电视不会自动更新,需要手动更新Wi-Fi的密码。移动到出现问
在数据库使用中经常使用到时间字段。常用的有创建时间和更新时间。然而在使用中想要创建时间在创建的时候自动设置为当前时间,更新时间在更新时自动更新为当前时间。创建表
iphone7关闭系统更新方法来啦!最近有不少果粉们吐槽iPhone7自动更新问题,系统更新相对还好,在有更新时只会提示用户,但不会自动更新,但安装的一些APP