`
jetwill
  • 浏览: 15597 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

触发器(TRIGGER)

阅读更多
触发器的语法
CREATE OR REPLACE TRIGGER 触发器名
 { BEFORE | AFTER }
 { INSERT OR UPDATE OR DELETE }
 ON 表1
 [ FOR EACH ROW ]
 { AS | IS }

  /* 声明部分 */
BEGIN
  /* 可执行部分 */
EXCEPTION
  /* 异常处理部分 */
END [触发器名];

表1被更新时执行BEGIN部分的处理。

●启动时刻
  BEFORE : 表1被更新前启动触发器。
  AFTER  : 表1被更新后启动触发器。

●触发器事件语句
  INSERT : 对表 1 执行INSERT处理时启动触发器。
  UPDATE :  对表 1 执行UPDATE处理时启动触发器。
  DELETE : 对表 1 执行DELETE处理时启动触发器。

●行触发器/语句触发器
  附加「 FOR EACH ROW 」关键字,就是行触发器。无此关键字,则是语句触发器。
    行触发器 : 针对更新对象的每1行启动触发器。比如更新3行的话,
           就会3次启动触发器。
    文触发器 : 如果对象表被更新,就启动触发器(仅1次)。

示例1)表[emp]的触发器[sample_tri]的执行条件如下:
启动时刻:更新DB前启动触发器
触发器事件:INSERT 或者 UPDATE 或者 DELETE
create or replace trigger sample_tri
 before delete or insert or update
 on emp
 
begin
 
 dbms_output.put_line('更新!!');
 
end sample_tri;


语句触发器

示例2)表[emp]的触发器[sample_tri]的执行条件如下:
启动时刻:更新DB后启动触发器
触发器事件:UPDATE
行触发器
create or replace trigger sample_tri
 before update
 on emp
 for each row
 
begin
 
 dbms_output.put_line('-------------------------');
 
 -- 输出更新对象记录的主键[EMP_ID]的值
 dbms_output.put_line('EMP_ID:' || :old.emp_id);
 
 -- 输出更新前的项目[salary]的值
 dbms_output.put_line('变更前数据:' || to_char(:old.salary));
 
 -- 输出更新后的项目[salary]的值
 dbms_output.put_line('变更后数据:' || to_char(:new.salary));
 
end sample_tri; 


更新前的表[emp]的数据:
SQL> select * from emp;
 
EMP DEP NAME        SALARY
--- --- ---------- -------
E01 D01 名字1       100
E03 D02 名字3       300
E04 D05 名字4       200


更新表[emp]时,启动示例2中的触发器:
SQL> update emp set salary = 500 where salary >= 200;
-------------------------
EMP_ID:E03
变更前数据:300
变更后数据:500
-------------------------
EMP_ID:E04
变更前数据:200
变更后数据:500
 
2行被更新了。
 
SQL>
SQL> select * from emp;
 
EMP DEP NAME           SALARY
--- --- ---------- ----------
E01 D01 名字1          100
E03 D02 名字3          500
E04 D05 名字4          500


匿名块
存储过程(PROCEDURE)
存储函数(FUNCTION)
存储包(PACKAGE)
触发器(TRIGGER)
PL/SQL的数据类型
PL/SQL的运算符(计算、赋值、结合、连结、指数、比较)
PL/SQL的变量和常量
%TYPE属性和%ROWTYPE属性
PL/SQL的内置函数
PL/SQL的执行权限(AUTHID)
以独立事务执行PL/SQL

→PL/SQL
→首页
分享到:
评论

相关推荐

    trigger触发器trigger触发器trigger触发器

    --行级触发器 create or replace trigger insert_person after insert on person for each row begin insert into person2 values(:new.id,:new.name,:new.password); end; create or replace trigger update_...

    Oracle触发器trigger详解

    主要为大家详细介绍了Oracle触发器trigger,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    SQL触发器trigger

    sqlserver的触发器。简单介绍了对表的增删改查触发效果有具体实例。便于理解

    SQL语句,存储过程,触发器

    SQL语句,存储过程,触发器

    Oraclet中的触发器

     触发器本身:即该TRIGGER 被触发之后的目的和意图,正是触发器本身要做的事情。 例如:PL/SQL 块。  触发频率:说明触发器内定义的动作被执行的次数。即语句级(STATEMENT)触发器和行级(ROW)触发器。语句级...

    触发器学习笔记

    触发器 trigger简介,原理和一些使用示例

    触发器,trigger

    触发器,trigger

    行业管理_触发器_trigger_saddlegw6_

    触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,,sql触发器的写法,简化代码量

    oracle触发器(trigger).pdf

    oracle触发器(trigger).pdf

    oracle触发器(trigger)[定义].pdf

    oracle触发器(trigger)[定义].pdf

    触发器(trigger)1

    他的作用很明显了,可以保证数据的完整性,下面有一个实例来说明他的好处,以及如果使编写代码不那么复杂二,触发器语法代码如下:CREATE TRIGGER trig

    mysql 触发器用法实例详解

     触发器 trigger是一种特殊的存储过程,他在插入(inset)、删除(delete)或修改(update)特定表中的数据时触发执行,它比数据本身标准的功能更精细和更复杂的数据控制能力。触发器不是由程序调用,而是由某个...

    触发器的PPT文档Trigger PPT document

    触发器.pptTrigger PPT documentTrigger PPT document

    触发器例程,关于触发器的使用

    触发器的一些例子,可以快速的使用触发器进行数据库编程

    Oracle中通过触发器来追踪用户的活动

    从Oracle8i开始,Oracle引入了特殊的触发器,这些触发器并不是和特殊的DML事件相关联的(DML事件,如,INSERT,UPDATE和DELETE)。这些系统级别的触发器包括数据库启动触发器,DDL触发器和最终用户登陆/注销触发器。...

    Go-go-trigger-golang的全局事件触发器

    go-trigger - golang的全局事件触发器。利用一个ID注册事件,然后就可以在您项目的任何地方触发事件。

    springTrigger 触发器

    springTrigger 触发器,很多时候有一些事情需要交给程序定时自动执行,java项目中使用spring触发器方式实现这个功能的方式很常见,配置文件说明已打包,需要自己下载jar包

Global site tag (gtag.js) - Google Analytics