************************************************************************
  ****原文: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类型,状态,參数的更多相关文章

  1. springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

    springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...

  2. Objective-C学习笔记(二十一)——函数的返回值与參数类型

    我们在之前的博客中涉及到的函数都没有參数,同一时候返回值也为void,即不须要返回值. 可是在以后的开发中.函数返回值和參数是必须涉及到的. 所以如今我们来讨论这个问题.我们还是以People类为例. ...

  3. springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定

    springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定 标签: springmvc springmvc学习笔记12-springmvc注解开发之包装类型參数绑定 需求 实现方 ...

  4. [javase学习笔记]-6.5 类类型參数与匿名对象

    这一节我们来说说类类型參数和匿名对象. 我们继续用之前的小汽车类吧 class Car { int num;//这是轮胎数属性 String color;//这是颜色属性 String brand;/ ...

  5. java參数传递机制浅析

    欢迎转载,转载请声明出处! ----------------------------------------- 前言: java语言中,參数的传递仅仅有一种机制.那就是值传递. 举例: 以下将通过几个 ...

  6. Java參数传递方式

    原文:http://blog.sina.com.cn/s/blog_59ca2c2a0100qhjx.html,我作了些改动并添加了一个实例,添加对照 本文通过内存模型的方式来讨论一下Java中的參数 ...

  7. Effective JavaScript Item 21 使用apply方法调用函数以传入可变參数列表

    本系列作为Effective JavaScript的读书笔记. 以下是一个拥有可变參数列表的方法的典型样例: average(1, 2, 3); // 2 average(1); // 1 avera ...

  8. [MySQL] Innodb參数优化

    innodb_buffer_pool_size innodb_buffer_pool_size 參数用来设置Innodb 最基本的Buffer(Innodb_Buffer_Pool)的大小,也就是缓存 ...

  9. C语言变长參数的认识以及宏实现

    1.认识 变长參数是C语言的特殊參数形式.比如例如以下函数声明: int printf(const char *format, ....); 如此的声明表明,printf函数除了第一个參数类型为con ...

随机推荐

  1. JS 中构造函数和普通函数的区别(详)

    1.构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写 2.构造函数和普通函数的区别在于:调用方式不一样.作用也不一样(构造函数用来新建实例对象) 3.调用方式不一样. 普通 ...

  2. .net core虚拟目录配置

    .net core在iis上配置虚拟目录不起作用,只需要将app.UseStaticFiles中物理路径PhysicalFileProvider改为指定的路径即可,如:E:\\Html\\News a ...

  3. Three学习之曲线

    曲线 属性 1. .arcLengthDivisions 当通过.getLengths计算曲线的累积段长度时,此值决定了分割的数量.为了确保在使用.getSpacedPoint等方法时的精度,如果曲线 ...

  4. 如何用PYTHON代码写出音乐

    什么是MIDI 博主本人虽然五音不全,而且唱歌还很难听,但是还是非常喜欢听歌的.我一直在做这样的尝试,就是通过人工智能算法实现机器自动的作词和编曲(在这里预告下,通过深度学习写歌词已经实现了,之后会分 ...

  5. C# 学习笔记_类

    定义:将成员及方法封装到类中,类的实例则称为对象. 结构:属性,类修饰符,class,类名,{类体} 类修饰符:new,public,protected,internal,private,abstra ...

  6. VTK+MFC 系列教程 非常强大

    虽然QT才是王道!MFC的懂一些也是好的. 原文链接:http://blog.csdn.net/www_doling_net/article/details/8939115 之前介绍了基于VTK的单文 ...

  7. win 7环境下java环境变量的配置

    http://www.cnblogs.com/zhj5chengfeng/archive/2013/01/01/2841253.html %Java_Home%\bin;%Java_Home%\jre ...

  8. C# window服务操作

    public int GetWindowsServiceStartType(String sServiceName) //判断服务状态是手动还是禁用还是自动 { string sState = &qu ...

  9. 应用七:Vue之适配test环境变量(2.0版)

    在我们使用vue-cli创建的项目中,默认只有开发development和生产production两种环境变量:但在实际的项目开发过程中往往都会有测试环境,下面就来说一下如何适配测试环境test的环境 ...

  10. CDR快速制作苹果手机照片小图标

    本篇教程用CorelDRAW快速制作苹果手机照片小图标,在实现的过程中主要使用了旋转复制的方法,加之一些常用工具的用法处理,最后加上透明效果下的合并模式就好了,现在跟小编一起来看看详细的操作吧! 1. ...