Oracle中的触发器
来源:互联网 发布:linux tar.xz如何安装 编辑:程序博客网 时间:2024/05/14 03:40
触发器可以分为INSERT触发器、UPDATE触发器、DELETE触发器。INSERT 触发器在对表或视图执行INSERT语句时触发,UPDATE触发器在对表或视图执行UPDATE操作时执行,DELETE触发器在对表或视图执行DELETE操作时执行。
在触发器中有两个变量非常重要,它们是NEW和OLD。NEW表示新添加的值,OLD表示原来的值。
触发器的语法如下:
Create [or replace] trigger 触发器名称
{before |after|inserted of}1
{insert|update|delete[of
[or
On
[refrencing
[for each row]4
[when (条件)]5
[declare
Begin
触发器主体
[exception
End [触发器名称]
需要解释的是:1处表示触发器是在操作之前还是在之后触发,举例若是验证数据的合法性,可在前验证后插入。不过inserted of是针对视图来说的对于视图操作时,触发器的处理代码则替代对视图的操作2表示触发器的类型,表示哪一种触发器,并且是在操作那一列时触发的限定条件,操作该列可触发触发器。3refrencing:触发器对insert,update,delete操作时,存在新旧数据的问题,新数据采用new对象表示,旧数据采用old对象来表示,在insert中,new表示要插入的数据,此时old没有意义。在delete中,old表示已删除的数据,此时new没有意义。在update中,new表示已更新的新数据,old表示更新前的旧的数据。New和old是记录对象,refrencing子句可以对new和old指定一个别名。4表示是行级触发器,每次对行操作时,都会触发触发器,处理代码都会执行。如果没有,则只触发一次,处理代码只执行一次。5限制触发器的条件,表示什么时候执行触发器。
另外注意的是,触发器和触发语句同在一个屋檐(事务)下,一起提交执行,一起回滚。
如下例子:insert触发器
create or replace trigger trigger_insert
after
insert
on testss
for each row
end;
当向testss中插入数据时,则触发trigger_insert触发器,目的是向名称为testtime的表中插入记录,记录操作者名称和操作时间。其中的:new.id是代表的testss中的id,同样的:new.names也代表的是testss中的names属性。Sysdate是系统时间。
其他两个触发器update和delete触发器和insert触发器的使用方法方式基本相同,不在赘述。那么使用触发器的好处是什么呢?个人觉得触发器就像是机关或者说是地雷,在满足一些条件的时候,自动的做一些事情,是事情变得简单易处理。例如银行的数据库应该会有很多的触发器,每一步或每一次的数据库操作都会触发触发器,记录相应的操作过程或操作数据,会有大量的操作文档,保证数据的安全和完整性。总之,触发器就是满足一定的条件之后就去执行一些动作,跟if语句有点像,我们想做些什么,只要写好处理语句,再写好触发条件就ok了。
- Oracle中的触发器
- oracle中的触发器
- Oracle中的触发器
- Oracle中的触发器
- Oracle数据库中的触发器
- Oracle中的触发器
- ORACLE中的序列和触发器
- 菜鸟学 oracle中的触发器
- oracle触发器中的RAISE_APPLICATION_ERROR用法
- oracle中的函数与触发器的使用
- oracle中触发器中的after和before
- oracle中触发器中的after和before
- Oracle数据库中的四种触发器
- Oracle数据库中的函数,包和触发器
- Oracle中的System Triggers(DDL触发器)
- Oracle中的视图、触发器、函数、包
- Oracle 触发器调用包中的存储过程
- Oracle中的存储过程,函数和触发器
- 编程的境界——个人体悟
- cocos2dx 新建的CCLayer触屏点击事件不好使的解决办法
- Oracle中的游标
- Oracle中的视图
- Oracle中的程序包
- Oracle中的触发器
- 关于mysql中文乱码问题的解决方法
- C# 委托
- Log4j日志文件的加载及应用
- 大道至简之六:透过现象看本质
- Struts2中的文件上传
- struts2文件下载
- Sturts2的常量配置
- struts2中的拦截器