Oracle触发器

2025-05-07 23:25:02

触发器可以看作一种“特殊”的存储过程,它定义了一些与数据库相关事件(如:INSERT 、UPDATE、CREATE等事件)发生时应执行的“功能代码块”,通常用于管理复杂的完整性约束,或监控对表的修改,或通知其他程序,甚至可以实现对数据的审计功能。

触发器概述

1、在触发器中有一个触发事件,触发器是通过这个“触发事件”来执行的(而存储过程的调用或碌巫谫浪执行是由用户或应用程序进行的)。能够引起触发器运行的操作被称为“触发事件”,如执行DML语句(弋讥孜求使用INSERT、UPDATE、DELETE语句对表或视图执行数据处理操作);执行DDL语句(CREATE、ALTER、DROP语句在数据库中创建、修改、删除模式对象);引发数据库系统事件(如系统启动或退出、产生异常错误等);引发用户事件(如登录或退出数据库操作)。语法格式如下:

Oracle触发器

3、(2)创建一个关于emp表的语句级触发器,将用户对dept表的操作信息保存到dept_log表中例如:创建一个触发器tri_dept,该触发器在insert、update和delete事件下都可以被触发,并且操作的数据对象是dept表,要求在触发器执行时输出对dept表所做的具体操作

Oracle触发器

3、(2)为了给goods表的id列生成不能重复的有序值,需要创建一个序列例如:使用create sequence 语句创建一个序列,命名为seq_id

Oracle触发器

5、(4)在触发器创建完毕后,用户可以通过向goods表中插入数据来验证触发器是否被执行,同时也能够验证该行级触发器是否能够使用序列为表的主键赋值例如:向goods表中插入两条记录,其中一条记录不指定id列的值,由序列seq_id来产生;另一条记录指定id的值;

Oracle触发器

3、(2)接下来编写一个关于view_emp_dept视图在insert事件中的触发器例如:创建一个关于view_emp_dept视图的替换触发器,在该触发器的主体中实现向emp表和dept表中插入两行关联的数据

Oracle触发器

用户事件触发器

1、用户事件触发器是因进行DDL操作或用户登录、退出等操作而引起运行的触发器,,引起该类型触发器运行的常见用户事件包括:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、RENAME、TRUNCATE、SUSPEND、LOGON和LOGOFF等。

2、(1)首先创建一个日志信息表,用于保存DDL操作的信息例如:使用create table语句创建一个日志信息表,该表保存的日志信息包括数据对象、数据对象类型、操作行为、操作用户和操作日期等

Oracle触发器

4、(3)在创建完毕触发器之后,为了引起触发器的执行,就要在scott模式下进行DDL操作例如:在SCOTT模式下,创建一个数据表和一个视图,然后删除视图和修改数据表,最后使用select语句查看ddl_oper_log日志表中的DDL操作信息

Oracle触发器
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢