达梦数据库(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 添加数据,记录创建时间

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

 3 查询最新数

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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值