http://shixm.iteye.com/blog/401564

关键字: oracle 数据库 触发器 trigger 语法
语法规则:
Create [or replace] trigger [模式.]触发器名
       Before| after   insert|delete|(update of 列名)

On 表名

[for each row]

When 条件

PL/SQL块

说明:

For each row的意义是:在一次操作表的语句中,每操作成功一行就会触发一次;不写的话,表示是表级触发器,则无论操作多少行,都只触发一次;

When条件的出现说明了,在DML操作的时候也许一定会触发触发器,但是触发器不一定会做实际的工作,比如when 后的条件不为真的时候,触发器只是简单地跳过了PL/SQL块;

例子:

sql 代码
create or replace trigger wf_tri_user_list before insert or update or delete on user_list   
for each row   
declare  
   uid varchar2(10); useq varchar2(10); asql varchar2(200); namea varchar2(200); nameb varchar2(200);   
begin  
   namea:=NULL;   
   nameb:=NULL;   
   if inserting then  
      insert into wflow.bpm_org_user(userid,username,diaplayname,seq) values(:NEW.user_id,:NEW.user_name,:NEW.user_realname,:NEW.user_id);   
      dbms_output.put_line('insert trigger is chufale .....');   
        
   end if;   
   if updating then  
      if (:NEW.user_name<>:OLD.user_name) and (:NEW.user_realname<>:OLD.user_realname) then  
         namea:=:NEW.user_name;   
         nameb:=:NEW.user_realname;   
         asql:='update wflow.bpm_org_user set diaplayname=:1 where username=:2';   
         execute immediate asql using namea,nameb;   
      else  
        if :NEW.user_name<>:OLD.user_name then  
          namea:=:NEW.user_name;   
          asql:='update wflow.bpm_org_user set user_name=:1 where username=:2';   
          execute immediate asql using namea;   
        else  
          if :NEW.user_realname<>:OLD.user_realname then  
            nameb:=:NEW.user_realname;   
            asql:='update wflow.bpm_org_user set diaplayname=:1 where username=:2';   
            execute immediate asql using nameb,:OLD.user_id;   
          end if;   
        end if;   
      end if;   
   end if;   
   if deleting then  
      update wflow.bpm_org_jobusers set userid = 0 where :OLD.user_id =userid and parentid=-1;   
      delete from wflow.bpm_org_jobusers where userid = :OLD.user_id;   
      delete wflow.bpm_org_user where userid=:OLD.user_id;   
   end if;   
   commit;   
end;

关键字:

:NEW 和:OLD使用方法和意义,new 只出现在insert和update时,old只出现在update和delete时。在insert时new表示新插入的行数据,update时new表示要替换的新数据、old表示要被更改的原来的数据行,delete时old表示要被删除的数据。

注意:

在触发器中不能使用commit。

oracle 数据库 触发器 trigger 语法相关推荐

  1. oracle中触发器的语法,解析Oracle触发器的语法

    导读:触发器是一种特殊的存储过程,触发器的执行不是由程序调用,也不是手工启动,而是由事件来触发,Oracle数据库是大家非常熟悉的数据库系统啦,那么Oracle触发器的语法是怎样的呢?下文中将为大家带 ...

  2. oracle数据库触发器是否生效,Oracle数据库触发器

    第一次写触发器,浪费了一个小时,少了一个;编译不通过 当A表有更新或插入数据时,则触发器执行向B表插入对应条件的数据 1 CREATE OR REPLACE TRIGGER Test -- 触发器名称 ...

  3. oracle中触发器作用,详细解析Oracle数据库触发器的功能种类及其作用

    触发器是一种特殊类型的存储过程,它不同于存储过程.触发器主要是通过事件进行触发而被执行的,触发器的触发事件分可为3类,分别是DML事件.DDL事件和数据库事件,而存储过程可以通过存储过程名字而被直接调 ...

  4. 数据库触发器(TRIGGER)

    数据库触发器(TRIGGER) 是由事件来触发某个操作.这些事件包括INSERT语句.UPDATE语句和DELETE语句.当数据库系统执行这些事件时,会激活促发其执行相应的操作.

  5. Oracle数据库的trigger(触发器)

    触发器 Trigger PL/SQL 程序中的触发器的结构类似于函数和过程 , 与函数和过程不同 , 触发器是在事件发生时隐式地运行的. 相当于Java语言中的事件监听器

  6. oracle数据库触发器删除不,Oracle之后删除触发器

    本Oracle教程解释了如何在Oracle中创建Before Delete触发器的语法和示例. Before Delete触发器表示Oracle将在执行删除操作之前触发此触发器. 语法 在Oracle ...

  7. oracle中触发器的语法,Oracle 触发器语法及实例

    Oracle 触发器语法及实例 Oracle触发器语法(一) 一Oracle触发器语法 触发器是特定事件出现的时候,自动执行的代码块.类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用 ...

  8. Oracle数据库——触发器的创建与应用

    一.涉及内容 1.理解触发器的概念.作用和类型. 2.练习触发器的创建和使用. 二.具体操作 (实验) 1.利用触发器对在scott.emp表上执行的DML操作进行安全性检查,只有scott用户登录数 ...

  9. oracle数据库有触发器,Oracle数据库触发器(Triggers)

    触发器是一种自动执行响应数据库变化的程序.可以设置为在触发器事件之前或之后触发或执行.能够触发触发器事件的事件包括下面几种: DML事件 DDL事件 数据库事件 DML事件触发器可以是语句或行级触发器 ...

最新文章

  1. jQuery添加DOM节点常用的5种方法
  2. 5分钟学会打游戏的活体人脑细胞,比 AI 学习速度更快
  3. system-copy 和 ShellExecute 用法
  4. NSArray ----NSMutableArray
  5. java开发和structs的关系_java---springMVC与strutsMVC的区别
  6. python2和python3的print语句语法有什么不同_Python3.2的版本,输入print语句总是出错,是什么原因?...
  7. 问题 L: 超超的中等意思
  8. python 数据库的中文乱码问题
  9. 我的100篇随笔纪念,关于JScript开发
  10. Linux 下 Tomcat 内存大小配置
  11. 【bzoj1050】[HAOI2006]旅行comf 并查集
  12. 《Python编程从入门到实践》学习笔记7(第8章:函数)
  13. vfp mysql教程_VFP基础教程 5.5 编辑框控件(editbox)
  14. 姐们儿,你就忍了吧—咱们一起骂老板(4)
  15. cf 667div3
  16. TensorFlow之深层神经网络
  17. OLAP、OLTP的介绍和比较
  18. OSChina 周四乱弹 ——印象开源中国:总是飙车就容易脱发
  19. 3D点云处理:数据集生成点云
  20. 图像处理之天空区域识别

热门文章

  1. 【数据结构与算法】之深入解析“正则表达式匹配”的求解思路与算法示例
  2. 538. Convert BST to Greater Tree 把二叉搜索树转换为累加树
  3. 20万人仍然每天活跃在“死”掉的ofo APP上:这已变成一个返利应用
  4. G6 图可视化引擎——核心概念——节点/边/Combo——内置节点——Circle
  5. 大数据WEB阶段(七)JDBC、数据库批处理、数据库连接池
  6. 【Linux】一步一步学Linux——ssh命令(176)
  7. jmeter聚合报告如何添加单位_JMeter聚合报告(Aggregate Report)理解
  8. C++中 引用与取地址的区别
  9. 每天一道LeetCode-----数组序列,每个元素的值表示最多可以向后跳多远,计算最少跳多少次可以到达末尾
  10. 每天一道LeetCode-----最长回文子串/序列,从头开始的最长回文子串长度