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

所属分类: 数据库 / PostgreSQL 阅读数: 168
收藏 0 赞 0 分享

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地址

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

更多精彩内容其他人还在看

SQLite教程(七):数据类型详解

这篇文章主要介绍了SQLite教程(七):数据类型详解,本文讲解了存储种类和数据类型、类型亲缘性、比较表达式、操作符等内容,需要的朋友可以参考下
收藏 0 赞 0 分享

Postgresql ALTER语句常用操作小结

这篇文章主要介绍了Postgresql ALTER语句常用操作小结,本文讲解了增加一列、删除一列、更改列的数据类型、表的重命名、更改列的名字、字段的not null设置等常用操作的代码示例,需要的朋友可以参考下
收藏 0 赞 0 分享

深入解读PostgreSQL中的序列及其相关函数的用法

这篇文章主要介绍了PostgreSQL中的序列及其相关函数的用法,包括序列的更新和删除等重要知识,需要的朋友可以参考下
收藏 0 赞 0 分享

PostgreSQL中常用的时间日期脚本使用教程

PostgreSQL是一款简介而又性能强大的数据库应用程序,其在日期时间数据方面所支持的功能也都非常给力,下面就来看一下PostgreSQL中常用的日期时间脚本使用教程.
收藏 0 赞 0 分享

Mac OS上安装PostgreSQL的教程

今天我们来看在Mac OS上安装PostgreSQL的教程,这里我们通过brew包管理器来安装,所以首先我们会讲解brew的安装配置:
收藏 0 赞 0 分享

Linux CentOS 7安装PostgreSQL9.3图文教程

这篇文章主要为大家详细介绍了Linux CentOS 7安装PostgresSQL9.3图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Linux CentOS 7源码编译安装PostgreSQL9.5

这篇文章主要为大家详细介绍了Linux CentOS 7源码编译安装PostgreSQL9.5的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Mybatis调用PostgreSQL存储过程实现数组入参传递

这篇文章主要介绍了mybatis调用postgresql自定义函数传递数组参数的解决方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Windows PostgreSQL 安装图文教程

PostgreSQL是一套功能强大的对象-关系型数据库管理系统。经过十几年的发展, PostgreSQL 是世界上可以获得的最先进的开放源码的数据库系统
收藏 0 赞 0 分享

PostgreSQL 安装和简单使用第1/2页

ostgreSQL是现在比较流行的数据库之一,这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。
收藏 0 赞 0 分享
查看更多