Chinaunix首页 | 论坛 | 博客
  • 博客访问: 80215
  • 博文数量: 16
  • 博客积分: 670
  • 博客等级: 上士
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-21 20:11
文章分类

全部博文(16)

文章存档

2011年(1)

2009年(5)

2008年(10)

最近访客

分类: Oracle

2008-12-30 16:03:28

触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的。


功能:1、 允许/限制对表的修改  2、 自动生成派生列,比如自增字段


      3、 强制数据一致性       4、 提供审计和日志记录


      5、 防止无效的事务处理   6、 启用复杂的业务逻辑


触发器触发时间有两种:after和before。


1、触发器的语法:


CREATE [OR REPLACE] TIGGER 触发器名 触发时间 触发事件


ON 表名


[FOR EACH ROW]


BEGIN


pl/sql语句


END


其中:触发器名:触发器对象的名称。


由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。


触发时间:指明触发器何时执行,该值可取:


before---表示在数据库动作之前触发器执行;


after---表示在数据库动作之后出发器执行。


触发事件:指明哪些数据库动作会触发此触发器:

                      

insert:数据库插入会触发此触发器;

update:数据库修改会触发此触发器;

delete:数据库删除会触发此触发器。


表 名:数据库触发器所在的表。


for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。


2.一个简单的触发器


create tigger test after update or delete  //创建名为TEST 的触发器


on tableA          //为哪个表创建


when (table.run_time ! = '2008')  // 限制条件


begin                             //主体语句


insert into wduserupload          //


values(tableA.a,tableA.b...)     


end                        



有问题请留言,多多交流!

阅读(2224) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~