oracle触发器是什么

发布时间:2021-08-05 14:37:16 作者:Leah
来源:亿速云 阅读:201

本篇文章给大家分享的是有关oracle触发器是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Oracle触发器是什么呢
首先我们来了解一下触发器是什么,触发器在触发一定事件的时候隐式执行的一段sql语句,触发器不能接收参数。Oracle触发器则是触发Oracle数据库中对数据库进行insert、update、delete操作或对视图进行类似的操作,还有一些系统的事件,比如数据库的关闭或开启。
触发器的分类有哪些
(1)、数据操纵语言(DML)触发器:创建在表上,有DML时间来触发的触发器;
(2)、替代(insteadof)触发器:创建在视图上,用来替换对视图进行添加、修改和删除操作。
(3)、数据定义语言(DDL)触发器:定义在模式上,触发事件是对数据库对象的创建和修改操作。
(4)、数据库系统触发器:定义在整个数据库上,触发的时间是数据库的操作,比如数据库的启动和关闭。
触发器的组成部分有哪些
(1)、触发的事件:即在何种情况下触发trigger,例如:insert、update、delete。
(2)、触发的时间:即该trigger是在触发事件之前(before)还是在触发事件之后(after),也是触发的事件和该trigger主体的先后顺序。
(3)、触发器本身:即触发器在触发事件的时候要执行的操作,例如:pl/sql块。
(4)、触发的频率:说明该触发器内定义的动作被执行的次数。即语句级触发器和行级触发器。语句级触发器是指当某个事件发生时,该触发器只执行一次。而行级触发器,在某个事件发生时,对受到该操作影响的每一行数据,都会单独执行一次触发器。
Oracle触发器实例
--创建表
--员工表
CREATETABLEemp(
emp_IDNUMBER(10)PRIMARYKEY,
emp_nameVARCHAR2(20)NOTNULL,
emp_sexVARCHAR2(10),
emp_addressVARCHAR2(15)
);
--日志表
CREATETABLElogs(
LOG_IDNUMBER(10)PRIMARYKEY,
LOG_TABLEVARCHAR2(10)NOTNULL,
LOG_DMLVARCHAR2(10),
LOG_KEY_IDNUMBER(10),
LOG_DATEDATE,
LOG_USERVARCHAR2(15)
);
--创建序列
CREATESEQUENCElogs_id_squINCREMENTBY1
STARTWITH1MAXVALUE9999999NOCYCLENOCACHE;
CREATESEQUENCEemp_id_squINCREMENTBY1
STARTWITH1MAXVALUE9999999NOCYCLENOCACHE;
触发器的限制有哪些
(1)、createtrigger语句的字符长度不能超多32kb;
(2)、触发器体内的select语句只能为select.....into.....结构,或者为定义游标所使用的select语句;
(3)、触发器中不能使用数据库事务控制语句,如:commit、rollback、savepoint语句;
(4)、由触发器调用的过程或函数也不能使用数据库事务控制语句;
(5)、触发器中不能使用lang、langrow类型;
(6)、触发器可以参照lob类型类的列值,但不能通过:new来修改lob列中的值;
(7)、触发器所涉及的表收到表约束的限制

以上就是oracle触发器是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. Oracle触发器学习记录
  2. Oracle专题16之触发器

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

oracle

上一篇:log4j2中日志异步打印的示例分析

下一篇:如何解决某些HTML字符打不出来的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》