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

来源:互联网 发布:图论 教材 知乎 编辑:程序博客网 时间:2024/06/11 20:57
--创建表结构/*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_UPDATEAS  G_ID TBL_USER.USER_ID%TYPE;END PKG_TBLUSER_UPDATE;/--2、创建行触发器CREATE OR REPLACE TRIGGER AFTER_UPD_TBLUSER_ROWTRGAFTER UPDATE OF UNAME ON TBL_USERFOR EACH ROWBEGIN  PKG_TBLUSER_UPDATE.G_ID:=:NEW.USER_ID;END;/--3、创建语句触发器(根据程序包的全局变量,对数据表TBLUSER字段进行更新)CREATE OR REPLACE TRIGGER AFTER_UPD__TBLUSER_TRGAFTER UPDATE OF UNAME ON TBL_USERBEGIN  UPDATE TBL_USER     SET LAST_MODIFIED = SYSDATE     WHERE     USER_ID = PKG_TBLUSER_UPDATE.G_ID;END;/
然后就是插入一条数据,修改插入的数据,就会触发触发器修改用户表最后修改时间。

其他解决方案:
CREATE OR REPLACE TRIGGER AFTER_UPD__TBLUSER_TRGAFTER UPDATE OF UNAME ON TBL_USERFOR EACH ROWBEGIN  :NEW.LAST_MODIFIED := SYSDATE;END;/
2 0
原创粉丝点击