postgressql更新时间

140 阅读1分钟

前言

Postgressql在操作更新时间自动更新时,目前没法做到,需要借助触发器更新时间

更新时间

创建数据库表

CREATE TABLE hello (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_time TIMESTAMP
);

执行结果为

image.png 创建时间可以使用CURRENT_TIMESTAMP作为当前时间,更新时间需要借助触发器

触发器创建

CREATE OR REPLACE FUNCTION "public"."update_timestamp"()
  RETURNS "pg_catalog"."trigger" AS $BODY$
begin
    new.update_time= current_timestamp;
    return new;
end
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100

执行结果 image.png

建立触发器关系

CREATE TRIGGER update_timestamp_trigger
BEFORE UPDATE ON hello
FOR EACH ROW
EXECUTE PROCEDURE  update_timestamp();

执行结果

image.png

创建数据

INSERT INTO "public"."hello" ("id", "name") VALUES (1, 'aaa');

结果为

image.png

更新

update hello set "name" = 'aaa' where "id" = 1

结果为 image.png

总结

可以使用postgressql自动更新时间