【Oracle】触发器,插入时添加ID,更新时更新修改时间和行版本号

最近需要在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 这里指被修改的数据行

猜你喜欢

转载自blog.csdn.net/maixiaochai/article/details/84772534