postgresql 定时建表_PostgreSQL更新表时时间戳不会自动更新的解决方法

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 update

set email = excluded.email,num=excluded.num;

select * from ts;

-- delete from ts;

好,就这些了,希望对你有帮助。

本文github地址。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: PostgreSQL更新表时时间戳不会自动更新的解决方法

本文地址: http://www.cppcns.com/shujuku/postgresql/207731.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值