当前位置:  数据库>oracle

Oracle触发器的使用

    来源: 互联网  发布时间:2017-05-19

    本文导语: 1、定义 触发器:与表或数据库事件联系在一起,当一个触发器事件发生时,定义在表上的触发器被触发执行。 触发器触发次序 1)执行 BEFORE语句级触发器; 2)对与受语句影响的每一行: · 执行 BEFORE行级触发器 · 执行 DML...

1、定义
 
触发器:与表或数据库事件联系在一起,当一个触发器事件发生时,定义在表上的触发器被触发执行。
 
触发器触发次序
 
1)执行 BEFORE语句级触发器;
 
2)对与受语句影响的每一行:
 
· 执行 BEFORE行级触发器
 
· 执行 DML语句
 
· 执行 AFTER行级触发器
 
3)执行 AFTER语句级触发器
 
2、DML触发器
 
触发类型--行级和表级
 
行级:触发语句处理每一行时,行级别触发器都激发一次。
 
通过:old访问原始值、:new访问修改后的值,:old和:new只在触发器内部有效。
 
触发时间--之前和之后
 

建立一个触发器, 当职工表 emp 表被删除一条记录时,把被删除记录写到职工表删除日志表中去
 
建立删除日志表
 
CREATE TABLE emp_his
 
AS SELECT * FROM EMP1 WHERE 1=2;
 
创建触发器
 
CREATE OR REPLACE TRIGGER del_emp
 
BEFORE DELETE OR UPDATE ON scott.emp1 FOR  EACH ROW
 
BEGIN
 
INSERT INTO emp_his(deptno , empno, ename , job ,mgr , sal , comm , hiredate )
 
VALUES( :old.deptno, :old.empno, :old.ename , :old.job,
 
:old.mgr, :old.sal, :old.comm, :old.hiredate );
 
END;
 
3、INSTEAD-OF触发器:
 
INSTEAD OF选项使Oracle激活触发器,而不执行触发事件
 
instead-of触发器只能定义在视图上,允许修改一个本来无法修改的视图。
 
可更改视图指:如果对视图的操作都是对基表的修改,并只有一个基表。
 
不可更改视图反之。
 
建立测试视图
 
CREATE OR REPLACE VIEW emp_view AS
 
SELECT deptno,COUNT(*) total_employee,SUM(sal) total_salary
 
FROM emp1 GROUP BY deptno;
 
--SELECT * FROM user_views;
 
对视图操作报错
 
DELETE FROM emp_view WHERE deptno=10;
 
建立替代触发器
 
CREATE OR REPLACE TRIGGER emp_view_delete
 
INSTEAD OF DELETE ON emp_view FOR EACH ROW
 
BEGIN
 
DELETE FROM emp1 WHERE deptno=:old.deptno;
 
END;
 
再次执行DELETE


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下安装oracle后使用命令行启动的方法 linux启动oracle
  • Oracle9i 9.0.1的JDBC Drivers 可以给Oracle 8.0.5使用马?
  • Suse linux使用oracle问题
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • jbuilder中使用oracle的问题
  • 求redhat linux 9.0下可以使用的oracle 10g或9i,还有redhat linux 9.0下可以使用的eclipse下载地址
  • Oracle事务!使用游标提交过程
  • 在Jbuilder7下,使用DbPilot.exe连接oracle,报错!请教高手!
  • AIX 64位系统上如何使用32位OCI oracle driver
  • Oracle中SQL语句连接字符串的符号使用介绍
  • 使用X manager连接oracle数据库的步骤
  • C++使用OCCI连Oracle10g的错误
  • 使用工具 plsqldev将Excel导入Oracle数据库
  • javascript开源软件 iis7站长之家
  • Oracle 数据 使用游标
  • oracle使用sql脚本生成csv文件案例学习
  • ORACLE 修改表结构 之ALTER CONSTAINTS的使用
  • Linux中Oracle使用相关知识集锦
  • Oracle密码文件的使用和维护第1/3页
  • Oracle SQL使用时注意自己的输入
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,