【Oracle】—— 自增 ID和自动修改更新日期与行版本号

11 篇文章 0 订阅

最近需要在oracle中添加一张表TEST_A,用于存储一些管理数据,主要的字段如下:

表结构

TAG,OBJ_ALIAS字段和OBJ_NAME这三个字段为必填内容,

插入数据时ID自增,CREATEDON、LAST_UPDATED_ON自动填入数据插入时的时间,ROWSTAMP0,表示数据修改次数数据被更新时,LAST_UPDATED_ON 变为修改数据时的时间,ROWSTAMP字段值 +1表示该行数据被修改了一次。

因此,定义了如下触发器:

CREATE OR REPLACE trigger OP_OBJ_MAPPING_TR
    BEFORE INSERT OR UPDATE ON OP_OBJ_MAPPING FOR EACH ROW
BEGIN
     IF INSERTING THEN
        :NEW.ID := OP_OBJ_MAPPING_SEQ.NEXTVAL;
    ELSIF UPDATING then
        :NEW.LAST_UPDATED_ON := SYSDATE;
        :NEW.ROWSTAMP := :OLD.ROWSTAMP + 1;
    END IF;
END;

相关解释:

OP_OBJ_MAPPING表名称
OP_OBJ_MAPPING_TR触发器名称
OP_OBJ_MAPPING_SEQ递增序列名称,步长1
OP_OBJ_MAPPING_SEQ.NEXTVAL取序列的下一个值
FOR EACH ROW行触发器,针对单行数据变动,触发行为
:NEW这里指将要插入的一行数据
:OLD这里指被修改的数据行


修改历史

  • [2022-06-21]
    • 修复文章最后“相关解释”表格中“FOR EACH ROW”带下划线的错误
  • [ 2020-09-01 ]

标题改为《【Oracle】—— 自增 ID和自动修改更新日期与行版本号》

The end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值