oracle 数据库 触发器 trigger 语法
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 语法相关推荐
- oracle中触发器的语法,解析Oracle触发器的语法
导读:触发器是一种特殊的存储过程,触发器的执行不是由程序调用,也不是手工启动,而是由事件来触发,Oracle数据库是大家非常熟悉的数据库系统啦,那么Oracle触发器的语法是怎样的呢?下文中将为大家带 ...
- oracle数据库触发器是否生效,Oracle数据库触发器
第一次写触发器,浪费了一个小时,少了一个;编译不通过 当A表有更新或插入数据时,则触发器执行向B表插入对应条件的数据 1 CREATE OR REPLACE TRIGGER Test -- 触发器名称 ...
- oracle中触发器作用,详细解析Oracle数据库触发器的功能种类及其作用
触发器是一种特殊类型的存储过程,它不同于存储过程.触发器主要是通过事件进行触发而被执行的,触发器的触发事件分可为3类,分别是DML事件.DDL事件和数据库事件,而存储过程可以通过存储过程名字而被直接调 ...
- 数据库触发器(TRIGGER)
数据库触发器(TRIGGER) 是由事件来触发某个操作.这些事件包括INSERT语句.UPDATE语句和DELETE语句.当数据库系统执行这些事件时,会激活促发其执行相应的操作.
- Oracle数据库的trigger(触发器)
触发器 Trigger PL/SQL 程序中的触发器的结构类似于函数和过程 , 与函数和过程不同 , 触发器是在事件发生时隐式地运行的. 相当于Java语言中的事件监听器
- oracle数据库触发器删除不,Oracle之后删除触发器
本Oracle教程解释了如何在Oracle中创建Before Delete触发器的语法和示例. Before Delete触发器表示Oracle将在执行删除操作之前触发此触发器. 语法 在Oracle ...
- oracle中触发器的语法,Oracle 触发器语法及实例
Oracle 触发器语法及实例 Oracle触发器语法(一) 一Oracle触发器语法 触发器是特定事件出现的时候,自动执行的代码块.类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用 ...
- Oracle数据库——触发器的创建与应用
一.涉及内容 1.理解触发器的概念.作用和类型. 2.练习触发器的创建和使用. 二.具体操作 (实验) 1.利用触发器对在scott.emp表上执行的DML操作进行安全性检查,只有scott用户登录数 ...
- oracle数据库有触发器,Oracle数据库触发器(Triggers)
触发器是一种自动执行响应数据库变化的程序.可以设置为在触发器事件之前或之后触发或执行.能够触发触发器事件的事件包括下面几种: DML事件 DDL事件 数据库事件 DML事件触发器可以是语句或行级触发器 ...
最新文章
- jQuery添加DOM节点常用的5种方法
- 5分钟学会打游戏的活体人脑细胞,比 AI 学习速度更快
- system-copy 和 ShellExecute 用法
- NSArray ----NSMutableArray
- java开发和structs的关系_java---springMVC与strutsMVC的区别
- python2和python3的print语句语法有什么不同_Python3.2的版本,输入print语句总是出错,是什么原因?...
- 问题 L: 超超的中等意思
- python 数据库的中文乱码问题
- 我的100篇随笔纪念,关于JScript开发
- Linux 下 Tomcat 内存大小配置
- 【bzoj1050】[HAOI2006]旅行comf 并查集
- 《Python编程从入门到实践》学习笔记7(第8章:函数)
- vfp mysql教程_VFP基础教程 5.5 编辑框控件(editbox)
- 姐们儿,你就忍了吧—咱们一起骂老板(4)
- cf 667div3
- TensorFlow之深层神经网络
- OLAP、OLTP的介绍和比较
- OSChina 周四乱弹 ——印象开源中国:总是飙车就容易脱发
- 3D点云处理:数据集生成点云
- 图像处理之天空区域识别
热门文章
- 【数据结构与算法】之深入解析“正则表达式匹配”的求解思路与算法示例
- 538. Convert BST to Greater Tree 把二叉搜索树转换为累加树
- 20万人仍然每天活跃在“死”掉的ofo APP上:这已变成一个返利应用
- G6 图可视化引擎——核心概念——节点/边/Combo——内置节点——Circle
- 大数据WEB阶段(七)JDBC、数据库批处理、数据库连接池
- 【Linux】一步一步学Linux——ssh命令(176)
- jmeter聚合报告如何添加单位_JMeter聚合报告(Aggregate Report)理解
- C++中 引用与取地址的区别
- 每天一道LeetCode-----数组序列,每个元素的值表示最多可以向后跳多远,计算最少跳多少次可以到达末尾
- 每天一道LeetCode-----最长回文子串/序列,从头开始的最长回文子串长度