达梦数据库(DM7)自动更新时间触发器及时间排序

前言

达梦数据库(DM7)目前支持的列属性并不多,比如并不支持直接创建自动记录更新时间的列属性,但是这个功能在实际数据库使用中又比较频繁,本文简单记录如何通过时间触发器设置某列自动记录更新时间,即所谓的update_time列。另外,实际使用中可能会有这种排序需求:永远显示最新的数据,及更新时间的排序,如果某条数据仅创建未更新过,则对比其创建时间,也就是创建时间和更新时间两列数据的对比结果,本文也将记录对应的sql语句。


一 创建数据库表,设置并启动触发器

/*
@创建测试所用数据库表
@id为自增列,数据类型为int,设置不为空,方可设置为自增列
@CREATE_TIME为创建时间,默认为表的创建时间
@UPDATE_TIME为修改时间,当表中数据被更新时,触发器启动,自动记录更新时间
*/
CREATE TABLE "SYSDBA"."TABLE_TEST"
(
"NAME" VARCHAR(50),
"ID" INT IDENTITY(1, 1) NOT NULL,
"CREATE_TIME" TIMESTAMP(0) DEFAULT SYSDATE NOT NULL,
"UPDATE_TIME" TIMESTAMP(0)) STORAGE(ON "MAIN", CLUSTERBTR) ;

/*
@触发器设置,功能:自动记录更新时间
@触发器名为UPDATE_TIMER
@触发器执行范围为每行生效
*/
CREATE OR REPLACE TRIGGER UPDATE_TIMER
BEFORE UPDATE ON "SYSDBA"."TABLE_TEST" FOR EACH ROW
BEGIN
NEW.UPDATE_TIME:=SYSDATE;
END;

/*启动触发器*/
ALTER TRIGGER UPDATE_TIMER ENABLE;

二 测试触发器功能

1 添加数据,记录创建时间

达梦数据库(DM7)自动更新时间触发器及时间排序_第1张图片

 2 更新数据,测试更新时间

达梦数据库(DM7)自动更新时间触发器及时间排序_第2张图片

 3 查询最新数

select * from "SYSDBA"."TABLE_TEST" order by isnull(UPDATE_TIME,CREATE_TIME) desc;

达梦数据库(DM7)自动更新时间触发器及时间排序_第3张图片

你可能感兴趣的:(数据库,达梦数据库,database)