• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >oracle > oracle触发器介绍

oracle触发器介绍

作者:LongCJ 字体:[增加 减小] 来源:互联网 时间:2017-09-08

LongCJ通过本文主要向大家介绍了oracle,触发器等相关知识,希望本文的分享对您有所帮助

触发器(trigger)

定义:触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。

Oracle 事件指的是对数据库的表进行的 insert、update 及 delete 操作或对视图进行类似的操作。

注意:

                1、触发器不能接收参数

                2、一张表最多可以有12个触发器

                3、触发器最大为32k

                4、触发器中不能使用数据库事务控制语句,并且由触发器所调用的过程或函数也不能使用数据库事务控制语句,如commit、rollback

                5、触发器中不能使用Long

触发器的分类:

                1、DML触发器

                2、替代触发器(insteadof):由于视图有可能是由多个表进行关联而成,直接通过更新视图来更新基表是不可行的,那我们就可以通过替代触发器来工作了。

                3、系统触发器:可以在ORACLE 数据库系统的事件中进行触发,如 ORACLE 系统的启动与关闭等。

触发器的组成:

                1、触发事件

                2、触发时间:before或after

                3、触发器本身

                4、触发频率:触发器内定义的动作被执行的次数。即语句级(statement)触发器和行级(row)触发器。

语句级(statement)触发器:是指当某触发事件发生时,该触发器只执行一次;

行级(row) 触发器:是指当某触发事件发生时,对受到该操作影响的每一行数据,触发器都单独执行一次

创建触发器的语法:

create [or replace] trigger trigger_name

                {before| after }   {insert| delete | update [of column [, column …]]}   on [schema.] table_name

                [for each row ] //for each row 选项说明触发器为行触发器

 

begin

                ......;

end;

 

DML触发器:

create or replace trigger dml_trigger

      before insert or delete or update of salary on person   //salary字段改变前触发

begin

       if inserting then

        dbms_output.put_line('插入操作');

      elsif deleting then

        dbms_output.put_line('删除操作');

      elsif updating then

        dbms_output.put_line('更新操作');

      end if;

end;

 

替代(instead of)触发器:

instead of用于对视图的 DML 触发,由于视图有可能是由多个表进行联结(join)而成,因而并非是所有的联结都是可更新的

//创建视图

create or replace view dept_salary_view as

      select department,sum(salary) total_salary from person group by department

//创建替代触发器      

create or replace trigger inst_trigger

      instead of delete on dept_salary_view for each row

begin

      delete from person where department=:old.department;

end inst_trigger;

//执行删除操作,触发替代触发器

delete from dept_salary_view where department='人事部';               //where后的字段一定要是视图中存在的

 

系统触发器:

语法:

create or replace trigger [sachema.]trigger_name

               {before|after}      {ddl_event_list | database_event_list}       on { database | [schema.] schema }

               [when_clause]

begin

                ......

end;

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Oracle连接远程数据库的四种方法
  • Oracle解析复杂json的方法实例详解
  • Oracle 11g简体中文版安装图文教程
  • Oracle存储过程、包、方法使用总结(推荐)
  • Oracle批量查询、删除、更新使用BULK COLLECT提高效率
  • Oracle 11g 安装配置方法图文教程
  • Oracle 11g安装错误提示未找到wfmlrsvcapp.ear的解决方法
  • oracle创建表空间、授权、创建用户、导入dmp文件
  • Oracle触发器实例代码
  • Oracle数据库的字段约束创建和维护示例

相关文章

  • 2017-05-11plsql与tsql的语法不同
  • 2017-05-11ORACLE8的分区管理
  • 2017-05-11基于ORA-12170 TNS 连接超时解决办法详解
  • 2017-05-11如何确定Oracle数据库表重复的记录
  • 2017-05-11Oracle中简单查询、限定查询、数据排序SQL语句范例和详细注解
  • 2017-05-11Oracle 常用的SQL语句
  • 2017-05-11sqlplus登录\连接命令、sqlplus命令的使用大全
  • 2017-05-11Oracle 11g数据库详细安装图文教程
  • 2017-05-11oracle误drop/update操作后的数据恢复测试
  • 2017-05-11简单说明Oracle数据库中对死锁的查询及解决方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Oracle11g完全卸载的详细步骤(超管用)
    • oracle截取字符(substr)检索字符位置(instr)示例介绍
    • Oracle数据库迁移方案
    • Oracle客户端 NLS_LANG 的设置方法
    • Oracle数据泵(Data Dump)使用过程当中经常会遇到一些奇奇怪怪的错误案例
    • Oracle数据库的备份与恢复
    • Oracle数据库的十种重新启动步骤
    • oracle表空单清理常用代码段整理
    • Oracle 多表查询
    • Oracle Listener 动态注册 与 静态注册

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有