实现对某个表的增改删的监控操作,并记录到另一个表中...
具体代码如下:
create or replace trigger test_trigger before insert or update or delete on test_table for each row declare v_id varchar2(30); v_bdlb varchar2(1); v_jgdm VARCHAR2(12); v_jgmc VARCHAR2(60); v_gajgmc VARCHAR2(60); v_gajgwsmc VARCHAR2(30); v_jz VARCHAR2(30); v_ksdwsdwmc VARCHAR2(30); begin /* 插入时往历史表中存放的是新插入的数据. 修改时往历史表中存放的是修改后的数据. 删除时往历史表中存放的是删除之前的数据. */ select org_id_s.nextval into v_id from dual; -- 利用seq生成主键 v_jgdm := :new.row_id; v_jgmc := :new.dept_name; v_gajgmc := :new.dept_name; v_gajgwsmc := :new.bmjc; v_jz := substr(v_jgdm, 7, 2); if '2' = :new.depttype then v_ksdwsdwmc := 'shiju'; else if '03' = v_jz then v_ksdwsdwmc := 'zhi'; elsif '05' = v_jz then v_ksdwsdwmc := 'xing'; elsif '51' = v_jz then v_ksdwsdwmc := 'she'; else v_ksdwsdwmc := 'qita'; end if; end if; if inserting then v_bdlb := '1'; insert into test_table_h (id, bdlb, jgdm, jgmc, gajgmc, gajgwsmc, jz, ksdwsdwmc) values (v_id, v_bdlb, v_jgdm, v_jgmc, v_gajgmc, v_gajgwsmc, v_jz, v_ksdwsdwmc); elsif updating then v_bdlb := '2'; insert into test_table_h (id, bdlb, jgdm, jgmc, gajgmc, gajgwsmc, jz, ksdwsdwmc) values (v_id, v_bdlb, v_jgdm, v_jgmc, v_gajgmc, v_gajgwsmc, v_jz, v_ksdwsdwmc); else v_bdlb := '3'; v_jgdm := :old.row_id; v_jgmc := :old.dept_name; v_gajgmc := :old.dept_name; v_gajgwsmc := :old.bmjc; v_jz := substr(v_jgdm, 7, 2); if '2' = :old.depttype then v_ksdwsdwmc := 'shiju'; else if '03' = v_jz then v_ksdwsdwmc := 'zhi'; elsif '05' = v_jz then v_ksdwsdwmc := 'xing'; elsif '51' = v_jz then v_ksdwsdwmc := 'she'; else v_ksdwsdwmc := 'qita'; end if; end if; insert into test_table_h (id, bdlb, jgdm, jgmc, gajgmc, gajgwsmc, jz, ksdwsdwmc) values (v_id, v_bdlb, v_jgdm, v_jgmc, v_gajgmc, v_gajgwsmc, v_jz, v_ksdwsdwmc); end if; end;
相关推荐
1、行级触发器不支持 update 、select 、delete 对自身表的操作。 2、表级触发器 不支持 :new 和 :old对象 所以想要触发器对自身表数据做修该,则用行级触发器得到 :new 和 :old对象中的相关数据,然后将这样的数据...
调试oracle触发器文档,自己整理的,不懂的可以聊系我
JSP对Oracle进行增删改查
个人亲测oracle触发器调用java程序
oracle insert数据成功之后调用触发器,触发器调用存储过程,存储实时调用java http
利用oracle 系统触发器防止用户使用drop table 或truncate table 命令。
oracle_触发器的种类和触发事件,很详细!
oracle 触发器 调用 存储过程 Oracle自治事务(Autonomous Transaction)
oracle触发器语法要点
oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例 oracle数据库触发器实例
oracle触发器实现主键自动增长操作
小白学oracle
介绍数据库触发器的PPT。内容包括:存储过程的创建与使用;存储过程的查看、编辑和删除;触发器的创建与使用;触发器的查看、编辑、重命名和删除
Oracle 触发器 备份 表数据
触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。数据库触发器有以下的作用:
C#与Oracle数据库进行增删改查,附源码、dll,可直接运行应用程序调试
oracle 触发器方式实现行ID自增加介绍的很详细! 大家好好学习啊
javaweb开发,连接Oracle数据库,通过网页注册,登录后对数据库中的用户表进行增删查。实现了登录、注册、增删改查等功能。
ORACLE触发器、内置程序包教学.doc )
oracle触发器功能介绍内附具体说明和简单介绍