【PLSQL】触发器trigger类型,状态,參数
************************************************************************ ****原文:blog.csdn.net/clark_xu 徐长亮的专栏 ************************************************************************
触发器trigger
希望在做DML操作时。不须要要提供主键值。系统自己主动生成
DML触发器的组成由四部分:
组成部分:
1.
触发时间,描写叙述:触发时间的时间次序,可能值:after,before
2.
触发事件,描写叙述:DML语句是触发时间,可能值insert、update、delete
3.
触发器类型。描写叙述:触发器被运行的次数,可能值statement,row
4.
触发体,描写叙述该触发器将要运行的动作,可能值完整的PLSQL块
3.9.1DML触发器的类型
语句级触发器,行级触发器,
行级触发器和语句级触发器的差别:
1.
触发的次数不同,假设DML语句仅仅影响一行,则语句级和行级触发器效果一样。
2.
假设影响多行,则行级触发器触发的次数比语句级触发器触发的次数多;
3.9.2 DML触发器的触发顺序
依据触发的时间,类型不同,能够组合为四种DML触发器,
1.
在sql语句运行之前运行一次:
a)
触发时间:before
b)
级别statement
2.
sql语句影响的每条记录被uupdate,delete或者insert之前运行一次
a)
触发时间:before
b)
级别:row
3.
sql语句影响的每条记录被update,delete或insert之后运行一次
a)
触发时间:after
b)
基本:row
4.
sql语句运行之后运行一次
a)
促发时间:after
b)
级别:statement
3.9.2 DML行级触发器
for each row子句创建一个行级触发器,使其在受到触发器事件影响每一行都被触发,比如:
create or replace trigger trig_name
{before |after } insert [or update …]
on tab_name
for each row [when restricting_condition]
PLSQL block;
3.9.3 行级触发器:OLD和:NEW
在列名前加上:OLD标示符表示该列变化前的值,加上:NEW标示符表示变化后的值。
因此触发事件:
1.
insert事件,:OLD.列名(全部的字段是NULL),:NEW.列名(insert语句要插入的值)
注:(存储过程:oracle:PLSQL。Pro*C,
数据库的值取出进行操作自后。要存放入数据库用存储过程)
2.
update事件, OLD.列名(在update之前该列的原始值)。NEW.列名(update语句要更细的新值),
3.
delete事件。OLD.列名(delete行之前列的原始值),NEW.列名(全部字段为null);
3.9.4触发器的又一次编译
假设触发器内调用其它函数或者过程,当它们被删除或改动后,触发器的状态被识别为无效。当DML语句激活一个无效触发器时候。oracle将又一次编译触发器代码,假设编译时发现错误,这将导致DML语句运行失败。
手动编译:
alter trigger [schema.]trig_name compile;
2.9.5
触发器状态
有效状态:enable:
无效状态:disable
两种状态的转换:
alter trigger trig_name [disable | enable];
alter table语句则一次性改变与指定表相关的全部触发器的使用状态;
alter table [schema.]tab_name {enable |disable } ALL triggers;
************************************************************************ ****原文:blog.csdn.net/clark_xu 徐长亮的专栏 ************************************************************************【PLSQL】触发器trigger类型,状态,參数的更多相关文章
- springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定
springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...
- Objective-C学习笔记(二十一)——函数的返回值与參数类型
我们在之前的博客中涉及到的函数都没有參数,同一时候返回值也为void,即不须要返回值. 可是在以后的开发中.函数返回值和參数是必须涉及到的. 所以如今我们来讨论这个问题.我们还是以People类为例. ...
- springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定
springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定 标签: springmvc springmvc学习笔记12-springmvc注解开发之包装类型參数绑定 需求 实现方 ...
- [javase学习笔记]-6.5 类类型參数与匿名对象
这一节我们来说说类类型參数和匿名对象. 我们继续用之前的小汽车类吧 class Car { int num;//这是轮胎数属性 String color;//这是颜色属性 String brand;/ ...
- java參数传递机制浅析
欢迎转载,转载请声明出处! ----------------------------------------- 前言: java语言中,參数的传递仅仅有一种机制.那就是值传递. 举例: 以下将通过几个 ...
- Java參数传递方式
原文:http://blog.sina.com.cn/s/blog_59ca2c2a0100qhjx.html,我作了些改动并添加了一个实例,添加对照 本文通过内存模型的方式来讨论一下Java中的參数 ...
- Effective JavaScript Item 21 使用apply方法调用函数以传入可变參数列表
本系列作为Effective JavaScript的读书笔记. 以下是一个拥有可变參数列表的方法的典型样例: average(1, 2, 3); // 2 average(1); // 1 avera ...
- [MySQL] Innodb參数优化
innodb_buffer_pool_size innodb_buffer_pool_size 參数用来设置Innodb 最基本的Buffer(Innodb_Buffer_Pool)的大小,也就是缓存 ...
- C语言变长參数的认识以及宏实现
1.认识 变长參数是C语言的特殊參数形式.比如例如以下函数声明: int printf(const char *format, ....); 如此的声明表明,printf函数除了第一个參数类型为con ...
随机推荐
- [.Net] C#开发微信门户及应用之微信菜单的多种表现方式介绍
URL:http://www.it165.net/pro/html/201405/13997.html 在前面一系列文章中,我们可以看到微信自定义菜单的重要性,可以说微信公众号账号中,菜单是用户的第一 ...
- [.Net] Excel导入导出各种方式分析
1.引言 1.1解决哪些问题 现在很多公司用的导出基本上采用的通过gridView导出excel,此种导出存在以下几种问题 1.数据量大的时候有时导出有时会让浏览器卡死,因为导出的excel不是真 ...
- WPF中StringToImage和BoolToImage简单用法
在WPF的绑定控件操作中,经常会通过bool值或者某些特定的string值做出相应动作.但UI层控件的很多属性对应的都不是Bool值或者对应的只是固定的String值. 这个时候有两方法解决该问题. ...
- iOS开发中UIDatePicker控件的使用方法简介
iOS上的选择时间日期的控件是这样的,左边是时间和日期混合,右边是单纯的日期模式. 您可以选择自己需要的模式,Time, Date,Date and Time , Count Down Timer四 ...
- NOIP 2013 T2 火柴排队 ---->求逆序对
[NOIP2013T2]火柴排队 背景 noip2013day1 描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各 自 排成一列, 同一列火柴的高度互不相同, ...
- ibatis设置启用及关闭命名空间
使ibatis用命名空间能够有效避免sql配置命名冲突,默认为启用状态,可以通过settings标签设置为关闭状态,例如: <settings> <setting name=&quo ...
- Spring AOP理解
Spring的核心思想的IOC和AOP.最近学习AOP,对切面的学习有了进一步的认识. Spring用代理类包裹切面,把他们织入到Spring管理的bean中.也就是说代理类伪装成目标类,它会截取对目 ...
- 三维投影总结:数学原理、投影几何、OpenGL教程、我的方法
如果要得到pose视图,除非有精密的测量方法,否则进行大量的样本采集时很耗时耗力的.可以采取一些取巧的方法,正如A Survey on Partial of 3d shapes,描述的,可以利用已得到 ...
- angular.js表单验证
表单验证<AngularJs> 常用的表单验证指令 1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type=& ...
- 常用CSS代码片段常见css bug
1.禁止文字被选中 .unselectable { -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select ...