postgresql使用触发器设置自动更新时间戳方法

大家都知道在我们日常开发中,在设计数据库字段的时候不可避免的都要createTime(创建时间)以及updateTime(修改时间)两个时间戳字段,作用大家也都一目了然。下面将为大家详细介绍两个字段的如何去设置来达到你想要的那个样子.我将用Navicat以及sql语句来大家详细介绍:

 1、create time

首先是 createTime,我们可以通过Navicat在添加字段时候将字段设置为timestamp类型,生成时间戳方式为**CURRENT_TIMESTAMP**或者设置为now()

至于SQL语句只需在建表过程default 一下就行这里不做赘述。

 2、updtae time

接下来是updateTime,也就是我们本篇文章的重点,相信你已经找遍了度娘还没解决吧,哈哈,没关系,我来帮你解决。

postgresql 更新时间戳需要通过触发器来实现。

1、首先需要通过代码创建函数,也就是定义触发器

create or replace function cs_timestamp() returns trigger as

$$

begin

  new.updatetime= current_timestamp;

  return new;

end

$$

language plpgsql;

cs_timestamp():为你定义函数的名称。

updatetime:为你表中更新时间戳字段名称(pgsql不可以大写的)。

其他的不用管执行就可以了。此过程只能通过sql实现。

2、接下来就是创建触发器了

create trigger cs_name before update on student for each row execute procedure cs_timestamp();

cs_name:触发器名称,可以随意设置,但是不要虎了吧唧整成中文的。

 student:表名

cs_timestamp():触发器所要用的函数名称,与第一步函数名称保持一致。

此过程可以通过Navicat设置,我用的是Navicat15,大家仅供参考呢

说明:更新字段这边不选,就是任意一个字段都会触发update_time的更新,勾选的话,只有勾选字段才会触发。但是勾选字段上限为15个。

结尾:当然函数可以在建好表后定义,也可以在建表前定义,这里无伤大雅。

补充:图中的切记不用选字段的地方,可以指定你想要的字段来控制updatetime时间戳的改变

最后的效果图:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容