PgSQL实现时间字段自动更新

PgSQL实现时间字段自动更新
 最后更新于 2024年10月02日 23:00:09

PgSQL想要实现数据插入或者更新时,update_time字段自动更新时间的功能,类似于mySQL的ON UPDATE

创建更新函数

CREATE OR REPLACE FUNCTION "public"."upd_update_time"()
  RETURNS "pg_catalog"."trigger" AS $BODY$
begin
    new.update_time= (SELECT to_char(now(),'YYYY-MM-DD HH24:MI:SS') now);
    return new;
end
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100

upd_update_time为函数名,update_time为表中需要自动更新的字段名

创建表

CREATE TABLE "sys_user" (
  "id" serial,
  "username" varchar(32) NOT NULL PRIMARY KEY,
  "password" varchar(128) NOT NULL,
  "secret" varchar(30) NOT NULL,
  "phone" varchar(11) DEFAULT NULL,
  "nickname" varchar(32) NOT NULL,
  "avatar" varchar(255) DEFAULT NULL,
  "status" enum_user_status NOT NULL,
  "reg_ip" varchar(15) DEFAULT NULL,
  "create_time" timestamp NOT NULL DEFAULT now(),
  "update_time" timestamp NOT NULL DEFAULT now(),
);

设置触发器

Navicat数据库管理软件中新增触发器即可。

1、选择表的设计模式,点击触发器标签页

2、点击新增按钮,输入一个触发器名称,依次勾选ROWBEFORE选项,再根据业务依次勾选插入更新复选框

3、选择触发函数,然后保存即可

Loading...