• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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_timest
      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 实现查询某时间区间的所有日期案例
    • PostgreSQL TIMESTAMP类型 时间戳操作
    • PostgreSQL 如何获取当前日期时间及注意事项
    • PostgreSQL中常用的时间日期脚本使用教程
    • 用一整天的时间安装postgreSQL NTFS权限
    • postgresql 中的时间处理小技巧(推荐)
    上一篇:Ubuntu中卸载Postgresql出错的解决方法
    下一篇:Abp.NHibernate连接PostgreSQl数据库的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PostgreSQL更新表时时间戳不会自动更新的解决方法 PostgreSQL,更新,表时,时间,