Oracle触发器修改自身字段解决方案

--创建表结构
/*
CREATE TABLE TBL_USER(
  USER_ID INTEGER PRIMARY KEY,
  UNAME VARCHAR2(20) NOT NULL,
  UPWD VARCHAR2(20) NOT NULL,
  LAST_MODIFIED DATE
);*/
--1、创建程序包
CREATE OR REPLACE PACKAGE PKG_TBLUSER_UPDATE
AS
  G_ID TBL_USER.USER_ID%TYPE;
END PKG_TBLUSER_UPDATE;
/
--2、创建行触发器
CREATE OR REPLACE TRIGGER AFTER_UPD_TBLUSER_ROWTRG
AFTER UPDATE OF UNAME ON TBL_USER
FOR EACH ROW
BEGIN
  PKG_TBLUSER_UPDATE.G_ID:=:NEW.USER_ID;
END;
/
--3、创建语句触发器(根据程序包的全局变量,对数据表TBLUSER字段进行更新)
CREATE OR REPLACE TRIGGER AFTER_UPD__TBLUSER_TRG
AFTER UPDATE OF UNAME ON TBL_USER
BEGIN
  UPDATE TBL_USER 
    SET LAST_MODIFIED = SYSDATE 
    WHERE 
    USER_ID = PKG_TBLUSER_UPDATE.G_ID;
END;
/
然后就是插入一条数据,修改插入的数据,就会触发触发器修改用户表最后修改时间。

其他解决方案:
CREATE OR REPLACE TRIGGER AFTER_UPD__TBLUSER_TRG
AFTER UPDATE OF UNAME ON TBL_USER
FOR EACH ROW
BEGIN
  :NEW.LAST_MODIFIED := SYSDATE;
END;
/
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值