- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle触发器详解2011-8-.doc
一、触发器概述?触发器是特?定事件出现?的时候,自动执行的?代码块。类似于存储?过程,但是用户不?能直接调用?他们。功能:1、 允许/限制对表的?修改2、 自动生成派?生列,比如自增字?段3、 强制数据一?致性4、 提供审计和?日志记录5、 防止无效的?事务处理6、 启用复杂的?业务逻辑触发器触发?时间有两种?:after?和befo?re。1、触发器的语?法: CREAT?E [OR REPLA?CE] TIGGE?R触发器名? 触发时间 触发事件 ON表名 [FOR EACH ROW] BEGIN? pl/sql语句? END触发器名:触发器对象?的名称。由于触发器?是数据库自?动执行的,因此该名称?只是一个名?称,没有实质的?用途。触发时间:指明触发器?何时执行,该值可取: befor?e---表示在数据?库动作之前?触发器执行?; after?---表示在数据?库动作之后?出发器执行?。 触发事件:指明哪些数?据库动作会?触发此触发?器: inser?t:数据库插入?会触发此触?发器; updat?e:数据库修改?会触发此触?发器; delet?e:数据库删除?会触发此触?发器。 表名:数据库触发?器所在的表?。 for each row:对表的每一?行触发器执?行一次。如果没有这?一选项,则只对整个?表执行一次?。2、举例: creat?e trigg?er biufe?r_emp?loyee?s_dep?artme?nt_id? //触发器名称? // 触发语句 befor?e inser?t or updat?e of depar?tment?_id --指定列名 on emplo?yees --目标表名 refer?encin?g old as old_v?alue --用:old_v?alue.列名代替:old.列名 new as new_v?alue --用:new_v?alue.列名代替:new.列名 for each row when (new_v?alue.depar?tment?_id80 ) --条件限定行?触发器 (比如限制登?录名,则可以 user = 登录名) //触发操作 begin? :new_v?mi?ssion?_pct :=0; end;触发器的组?成部分:1、 触发器名称?2、 触发语句3、 触发器限制?4、 触发操作1、 触发器名称?creat?e trigg?er biufe?r_emp?loyee?s_dep?artme?nt_id?2、 触发语句比如:表或视图上?的DML语?句、DDL语句?,数据库关闭?或启动,start?up shutd?own等等?。befor?e inser?t or updat?e of depar?tment?_idon emplo?yeesrefer?encin?g old as old_v?aluenew as new_v?aluefor each row说明:1) 对empl?oyees?表进行in?sert的?时候(无论是否规?定了dep?artme?nt_id?字段)2) 对empl?oyees?表的dep?artme?nt_id?列进行up?date的?时候3、 触发器限制?when (new_v?alue.depar?tment?_id80 )限制条件不?是必须的。此例表示如?果列dep?artme?nt_id?不等于80?的时候,触发器就会?执行。其中的ne?w_val?ue是代表?更新之后的?值。4、 触发操作触发操作是?触发器的主?体 begin? :new_v?mi?ssion?_pct :=0; end;主体很简单?,就是将更新?后的 commi?ssion?_pct列?置为0触发: inser?t into emplo?yees(emplo?yee_i?d, last_?name,first?_name?,hire_?date,job_i?d,email?,depar?t ment_?id,salar?y,commi?ssion?_pct ) value?s( 12345?,Chen,Donny?, sysda?te, 12, donny?@hotma?,60,10000?,.25); selec?t commi?ssion?_pct
文档评论(0)