您的位置:首页 > 数据库 > Oracle

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

2014-03-17 14:37 309 查看
--创建表结构
/*
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;
/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: