PL/SQL之触发器类型
2016-02-29 17:01
239 查看
关系数据库里都会提供触发器技术。触发器在数据库里独立存在,与函数和存储过程不同,函数和存储过程都是要用户显示
的去调用,才会执行。触发器是当某个事件发生时,隐式的去执行。同时,我们应该知道触发器是不带参数的。
ORACLE 是指对表进行INSERT,UPDATE和DELETE操作或者是对视图进行类似的操作。
触发器分类:
(1)DML触发器
ORACLE可以在DML操作前或操作后进行级触发和语句级触发,这样的触发器叫做DML触发器。
(2)替代触发器
在 ORACLE 里,不能直接对由两个以上的表建立的视图进行操作,所以出现替代触发器。
(3)系统触发器
能够在 ORACLE 数据库系统的事件中进行触发事件,如控制ORACLE 系统的启动或关闭等,这种
ORACLE系统级别的触发器叫做系统触发器。
触发器组成:
触发事件:
引起创建的触发器被触发的事件。比如,我们比较常见的事件有:
DML语句(INSERT,UPDATE,DELETE),DDL语句(ALTER,CREATE,DROP),用户事件(退出数据库,登录数据库)等。
触发时间:
触发器在事件执行之前(BEFORE)或事件执行之后(AFTER)触发器执行。
触发操作:
触发器被触发后,具体要做得事情。比如,在某个表插入新数据后,操作另外一个表更新以下状态。
触发对象:
表、视图、模式、数据库。在这些对象上发生操作,才会执行触发器
触发条件:
就是在WHERE后加一些逻辑,达到触发业务效果。
触发频率:
触发频率就是触发器执行的次数。语句级(STATEMENT)触发器和行级(ROW)触发器,对应触发器影响一行或多行。
编写触发器注意事项:
触发器不接受参数;
一个表上最多可有 12 个触发器,但同一时间、同一事件、同一类型的触发器只能有一个;
一个表上的触发器越多,操作越频繁,性能受影响越大;
触发器的执行部分只能用 DML语句,不能使用 DDL 语句;
触发器中不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT),因为当触发语句部分提交等时,触发器会跟随
进行同样的操作,触发器等于瞎忙活了半天,没有效果。
触发器主体中不能申明任何Long和blob变量;
以上三个触发器语法和使用情况不同,并不具备同一语法;
的去调用,才会执行。触发器是当某个事件发生时,隐式的去执行。同时,我们应该知道触发器是不带参数的。
ORACLE 是指对表进行INSERT,UPDATE和DELETE操作或者是对视图进行类似的操作。
触发器分类:
(1)DML触发器
ORACLE可以在DML操作前或操作后进行级触发和语句级触发,这样的触发器叫做DML触发器。
(2)替代触发器
在 ORACLE 里,不能直接对由两个以上的表建立的视图进行操作,所以出现替代触发器。
(3)系统触发器
能够在 ORACLE 数据库系统的事件中进行触发事件,如控制ORACLE 系统的启动或关闭等,这种
ORACLE系统级别的触发器叫做系统触发器。
触发器组成:
触发事件:
引起创建的触发器被触发的事件。比如,我们比较常见的事件有:
DML语句(INSERT,UPDATE,DELETE),DDL语句(ALTER,CREATE,DROP),用户事件(退出数据库,登录数据库)等。
触发时间:
触发器在事件执行之前(BEFORE)或事件执行之后(AFTER)触发器执行。
触发操作:
触发器被触发后,具体要做得事情。比如,在某个表插入新数据后,操作另外一个表更新以下状态。
触发对象:
表、视图、模式、数据库。在这些对象上发生操作,才会执行触发器
触发条件:
就是在WHERE后加一些逻辑,达到触发业务效果。
触发频率:
触发频率就是触发器执行的次数。语句级(STATEMENT)触发器和行级(ROW)触发器,对应触发器影响一行或多行。
编写触发器注意事项:
触发器不接受参数;
一个表上最多可有 12 个触发器,但同一时间、同一事件、同一类型的触发器只能有一个;
一个表上的触发器越多,操作越频繁,性能受影响越大;
触发器的执行部分只能用 DML语句,不能使用 DDL 语句;
触发器中不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT),因为当触发语句部分提交等时,触发器会跟随
进行同样的操作,触发器等于瞎忙活了半天,没有效果。
触发器主体中不能申明任何Long和blob变量;
以上三个触发器语法和使用情况不同,并不具备同一语法;
相关文章推荐
- SQL DCL数据控制语言,用来定义訪问权限和安全级别;
- Oracle大数据常见优化查询
- mysql分表操作
- Oracle大数据常见优化查询
- IMP-00003: ORACLE error 3113 encountered ORA-03113: end-of-file on communication channel
- mysql 线上not in查询中的一个坑
- mongoDB 3.0 安全权限访问控制
- MySQL my.cnf参数配置优化详解
- 关于oracle数据库误删表空间文件后无法登陆sqlplus的解决方法
- 【转载】JDBC连接各种数据库的字符串
- MySQL知识(二十三)——表的导出和导入
- oracle数据泵EXPDP和IMPDP使用说明
- mysql无法启动,报错 Can't start server: can't create PID file: No space left on device
- Oracle expdp/impdp 用法例子 详解 举例 例子 他的这篇文章没有办法写出来 要这么改
- 关于Redis中的数据类型
- ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库
- Oracle 10g 到11g的数据迁移 导入导出 顺序步骤 expdp/impdp
- 搭建mysql主从数据库实现双机热备架构
- Oracle OS备份了解
- sql在添加新列时同时指定default约束名称