景安微信
网站有问题
老雷来帮忙
景安网络 欢迎来到景安网络虚拟主机资讯站!
免费主机国内主机
国内主机
0元购买
原价99元/年 我想领取
QQ群
快云体验交流群

群名称:快云体验群

群   号:288544772

一键加群 快云体验交流群
公众号
快云官方微信

扫码关注公众号您可以:

1、微信一键登录会员;

2、微信提交故障工单;

3、微信查询网站备案。

回顶部
虚拟主机

首页 > 数据库 > oracle触发器是什么?oracle触发器实例讲解。

oracle触发器是什么?oracle触发器实例讲解。

来源:景安网络

作者:景安数据

更新时间:2014-05-08 10:08

景安网络—专业的数据中心服务商!提供快云服务器,快云VPS,虚拟主机,域名注册,服务器托管,服务器租用,SSL证书,数据库存储。 2019快云上云特惠季 立即注册

    Oracle触发器是什么呢
    首先我们来了解一下触发器是什么,触发器在触发一定事件的时候隐式执行的一段sql语句,触发器不能接收参数。Oracle触发器则是触发Oracle数据库中对数据库进行insert、update、delete操作或对视图进行类似的操作,还有一些系统的事件,比如数据库的关闭或开启。

    触发器的分类有哪些
    (1)、数据操纵语言(DML)触发器:创建在表上,有DML时间来触发的触发器;
    (2)、替代(instead of)触发器:创建在视图上,用来替换对视图进行添加、修改和删除操作。
    (3)、数据定义语言(DDL)触发器:定义在模式上,触发事件是对数据库对象的创建和修改操作。
    (4)、数据库系统触发器:定义在整个数据库上,触发的时间是数据库的操作,比如数据库的启动和关闭。

    触发器的组成部分有哪些
    (1)、触发的事件:即在何种情况下触发trigger,例如:insert、update、delete。
    (2)、触发的时间:即该trigger是在触发事件之前(before)还是在触发事件之后(after),也是触发的事件和该trigger主体的先后顺序。
    (3)、触发器本身:即触发器在触发事件的时候要执行的操作,例如:pl/sql块。
    (4)、触发的频率:说明该触发器内定义的动作被执行的次数。即语句级触发器和行级触发器。语句级触发器是指当某个事件发生时,该触发器只执行一次。而行级触发器,在某个事件发生时,对受到该操作影响的每一行数据,都会单独执行一次触发器。

    Oracle触发器实例
    --创建表
    --员工表
    CREATE TABLE emp(  
        emp_ID NUMBER(10) PRIMARY KEY,  
        emp_name VARCHAR2(20) NOT NULL,  
        emp_sex VARCHAR2(10),  
        emp_address VARCHAR2(15)  
    ); 
    --日志表
    CREATE TABLE logs(  
        LOG_ID NUMBER(10) PRIMARY KEY,  
        LOG_TABLE VARCHAR2(10) NOT NULL,  
        LOG_DML VARCHAR2(10),  
        LOG_KEY_ID NUMBER(10),  
        LOG_DATE DATE,  
        LOG_USER VARCHAR2(15)  
    ); 
    --创建序列
    CREATE SEQUENCE logs_id_squ INCREMENT BY 1   
            START WITH 1 MAXVALUE 9999999 NOCYCLE NOCACHE;  
    CREATE SEQUENCE emp_id_squ INCREMENT BY 1   
            START WITH 1 MAXVALUE 9999999 NOCYCLE NOCACHE; 

    触发器的限制有哪些
    (1)、create trigger 语句的字符长度不能超多32kb;
    (2)、触发器体内的select语句只能为select .....into .....结构,或者为定义游标所使用的select语句;
    (3)、触发器中不能使用数据库事务控制语句,如:commit、rollback、savepoint语句;
    (4)、由触发器调用的过程或函数也不能使用数据库事务控制语句;
    (5)、触发器中不能使用lang、lang row类型;
    (6)、触发器可以参照lob类型类的列值,但不能通过:new 来修改lob列中的值;
    (7)、触发器所涉及的表收到表约束的限制

本文链接:http://host.zzidc.com/shujuku/458.html

关键字:oracle触发器oracle触发器实例oracle数据

若无特别注明,文章皆为景安网络原创,转载请注明出处。

上云HI购