下载此文档

触发器知识总结.doc


文档分类:生活休闲 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
数据库触发器(DataBaseTrigger)是存储在数据库中的过程,当表被修改时它隐式地被激发(执行)。在Oracle中允许在对表进行insert、update或delete操作时隐式地执行所定义的过程,这些过程称为数据库触发器。触发器的作用:自动生成导出的列值。防止无效的事务。实施更复杂的安全性检查。在分布式数据库中实施跨越结点的引用完整性。实施复杂的事务规则。提供透明事件日志。提供高级审计。维护同步表的复制。收集关于存取表的统计。触发器的优点:触发器是自动的:当对表中的数据作了任何修改之后立即被激活。触发器可以通过数据库中的相关表进行层叠更改。触发器可以强制限制,这些限制比用check约束所定义的更复杂。触发器的分类:DML触发器:由对表的insert、delete、update激发。Insteadof触发器:代替直接对视图insert、delete、update操作。系统触发器:<1>DDL事件(create、alter、drop语句),需要admistrater、datebase、trigger特权。<2>数据库事件:服务器启动、关闭、用户登录、注销、服务器错误等。创建触发器语法:Create[orreplace]trigger[模式]触发器名Before|afterinsert|delete|(updateof列名)On表名[foreachrow]When条件PL/SQL块注释:Foreachrow的意义是:在一次操作表的语句中,每操作成功一行就会触发一次;不写的话,表示是表级触发器,则无论操作多少行,都只触发一次。When条件的出现说明了,在DML操作的时候也许一定会触发触发器,但是触发器不一定会做实际的工作,比如when后面的条件不为真的时候,触发器只是简单地跳过了PL/SQL块。创建触发器应该注意:truncatetable语句类似与没有where子句(用于删除行)的delete语句,不会引发触发器,因为truncatetable语句没有记录,删除时,不会写日志。writetext语句不会引发insert或update触发器。当创建一个触发器时必须指定:<1>名称。<2>在其上定义触发器的表。<3>触发器将何时激发。<4>激活触发器的数据修改语句。触发器的原理:每个触发器有两个特殊的表:插入表和删除表。这两个表是逻辑表。并且这两个表是由系统管理的,存储在内存中,而不是数据库中,因此不允许用户直接对其修改。这两个表的结构总是与被该触发器作用的表的结构相同。这两个表是动态驻留在内存中,当触发器的工作完成,这两个表也被删除。这两个表的主要保存因用户操作而影响到得原数据值或新数据值。这两个表是只读的,用户不能向这两个表写入数据,但是可以引用表中的数据。new与old:必须是针对行级触发器的,也就是说要使用这两个变量的触发器一定有foreachrow。这两个变量是系统自动提供的数组变量,new用来记录新插入的值,old用来记录被删除的值。使用insert的时候只有:new里有值。使用delete的时候只有:old里有值。使用update的时候:new和old里都有值。insteadof触发器的原理:当为表或视图定义针对某一操作(insert、delete、update)的insteadof类型的触发器且执行了相应的操作时,尽管触发器被触发,但

触发器知识总结 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zbfc1172
  • 文件大小22 KB
  • 时间2019-12-04
最近更新