create or replace trigger emp_bud
before update or delete on emp
for each row
declare
v_action varchar2(50);
v_log varchar2(500) := '';
begin
if :new.empno is not null then
begin
v_log := v_log || '操作' || :new.empno ;
if :new.ename <> :old.ename then
v_log := v_log || ' ename 由' || :old.ename || '更改为' || :new.ename;
end if;
if :new.job <> :old.job then
v_log := v_log || ' job 由' || :old.job || '更改为' || :new.job;
end if;
if :new.mgr <> :old.mgr then
v_log := v_log || ' mgr 由' || :old.mgr || '更改为' || :new.mgr;
end if;
if :new.hiredate <> :old.hiredate then
v_log := v_log || ' hiredate 由' || :old.hiredate || '更改为' ||
:new.hiredate;
end if;
if :new.sal <> :old.sal then
v_log := v_log || ' sal 由' || :old.sal || '更改为' || :new.sal;
end if;
if :new.comm <> :old.comm then
v_log := v_log || ' comm 由' || :old.comm || '更改为' || :new.comm;
end if;
if :new.deptno <> :old.deptno then
v_log := v_log || ' deptno 由' || :old.deptno || '更改为' || :new.deptno;
end if;
if UPDATING then
v_action := 'update';
elsif deleting then
v_action := 'delete';
end if;
insert into emp_log
(id, action, time, log, actor)
values
(EMPLOG_SEQ.NEXTVAL, v_action, sysdate, v_log, USER);
/*pkg_emp.v_emp_obj.empno := :new.empno;
select *
into pkg_emp.v_emp_obj
from emp
where empno = pkg_emp.v_emp_obj.empno;
dbms_output.put_line ( 'ename = ' || pkg_emp.v_emp_obj.ename || ' job = ' || pkg_emp.v_emp_obj.job );*/
exception
when others then
dbms_output.put_line(SQLCODE || '-before-' || SQLERRM);
end;
else
pkg_emp.v_emp_obj.empno := 0;
end if;
end;
例子: update emp where empno=7369;
注意 : 本例子中一定要有empno才可以
分享到:
相关推荐
这个非常经典的oracle数据库的操作,查询和视图,PLSQL介绍,存储过程和触发器的详细PPT讲解,希望对大家有所帮助,挺经典的。
Oracle通过触发器或者同义词避免用户修改表结构,2种实现方式,可根据自身需要来选择
MySQL 触发器简单实例 语法 CREATE TRIGGER <...表名称> –触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器
oracle 的常见第三方工具主要是:toad ,PLSQL Developer,object browser;...8.可以对共享区进行监控,了解那些是不好的SQL以及执行计划; 9.可以在“裸机”上连接数据库,也就是可以无需安装oracle客户端;
包括11张表,4个视图,15个DML触发器,1个替代触发器,若干个序列和存储过程,只要运行一个SQL文件就可以了。
该工具主要优点如下: 1.能便利的生成各种针对于选中字段的...可以对共享区进行监控,了解那些是不好的SQL以及执行计划.9.可以在―裸机‖上连接数据库,也就是可以无需安装oracle客户端.10.兼容oracle8,9,10,11这4个版本.
7.oracle 有个特点,就是如果表结构发生变化,就会有很多视图,存储过程,触发器等跟着失效,这时候要把这些无效的对象重新编译一下。但是这个动作会经常遗忘, 所以我这里加了一个检索并修正无效对象的功能;
oracle 的常见第三方工具主要是:toad ,PLSQL Developer,object browser;各有优缺点:toad 主要是功能强大;PLSQL Developer主要是编译精确;object browser主要操作人性化;但在平时的程序开发过程中,就算使用了以上工具...
用到了数据库三张表,一个是用户信息表、一个是图书类型、一个是图书信息,其中由于Oracle没有像MySQL那样的自动的自增序列,因此需要新建序列、触发器。配置好数据库相关可直接运行,此项目源于北大青鸟结业考试。
7.oracle 有个特点,就是如果表结构发生变化,就会有很多视图,存储过程,触发器等跟着失效,这时候要把这些无效的对象重新编译一下。但是这个动作会经常遗忘, 所以我这里加了一个检索并修正无效对象的功能; 8....
当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据, 然后才可以删除主表的数据。还有一种就是级联删除子表数据。 注意:外键约束的参照列,在主表中引用的只能...
1.18. 修改表结构后不允许对表进行任何操作(原) 57 1.19. 解决暂挂表(原) 58 1.20. DB2LOOK语法及使用 58 导出表结构的表结构脚本 59 1.21. DB2的函数大全 64 1.22. DB2数据库为单个会话锁定技巧 64 1.23. EXISTS和...
-- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unlock; --那么这个用户名就能使用了。 --(默认全局数据库名orcl) 1、...