- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章应用程序结构2_触发器
概述 数据库触发器: 特殊的存储过程,用户不能直接调用,隐式执行; 对关联表执行 DML等 操作时触发的; 功能: 允许或限制对表的修改 自动生成派生列 强制数据一致性 提供审计和日志记录 防止无效的事务处理 启用复杂的业务逻辑 数据库触发器与存储过程比较 1、数据库触发器是在进行数据操纵时自动触发的,存储过程要通过程序调用。 2、数据库触发器中可以调用存储过程、函数。 3、在触发器中禁止使用COMMIT 、ROLLBACK语句; 存储过程中可以使用PL/SQL中可以使用的全部SQL语句。 4、在触发器中不得间接调用含有COMMIT、ROLLBACK语句的存储过程。 触发器的组成 四部分组成:触发器名称、触发事件或语句、触发限制和触发器动作。 触发事件或语句:指引起激发触发器的SQL语句,可为对一指定表的INSERT、UNPDATE或DELETE语句。 触发条件:指定一个布尔表达式,该布尔表达式为真时激发触发器。 触发时刻:触发事件完成之前还是之后执行。 触发器名称 数据库中的每一个对象都有名称,触发器对象也不例外。一般应该采用描述性名称来定义触发器名称。在触发器名称中,应该包括触发器执行的时间、执行的操作、涉及的表和列等。 定义触发器语句示例: create trigger biufer_emp_empno Biufer:before insert or update for each row Adfer:after delete for each row 触发语句 触发语句: 导致Oracle执行触发器的事件。 触发器事件可以是下面的内容: 表和一些视图上的数据操纵语言语句,例如insert、update、delete; 模式对象上的数据定义语言语句,例如create、alter、drop; 数据库的启动和关闭; 系统错误; 各种系统活动。 例:对emp表进行insert操作或对emp表的empno列进行update操作时激活: before insert or update of empno on emp for each row 触发器限制 即使导致触发器激活的事件发生了,但是也不意味着Oracle就会执行它。激活事件发生之后,触发器首先判断在触发器上是否存在限制。 某个限制条件可能如下: when(new.empno7782) --new前没有“:” 触发操作 触发操作是触发器的主体。 满足如下条件时触发操作(代码块)被执行: 使用了合适的触发语句( before insert…); 如果提供了触发器限制(when …),则评估为真。 触发器的类型 Oracle系统: 5种类型的触发器 语句触发器; 行触发器; instead of触发器; 系统事件触发器; 用户事件触发器. 14.2 语句触发器 语句触发器: 在表上或某些视图上执行的特定语句的触发器。 语句触发器能够与insert、update或delete语句或这些语句的任意组合关联。用户既可以在表的insert或update语句上使用单独的触发器,也可以在表的insert和update语句的组合上使用触发器,甚至可以在单独的表上拥有多个insert语句触发器。 before和after 语句触发器能够在语句执行前(before)被激活,这使得它非常适合于强化安全、启用业务规则、进行日志操作等。 after语句触发器中,Oracle会在语句完成之后执行它们,而不是在语句执行前执行它们。 创建语句触发器 在insert、update或delete前,判断正在进行操作的用户是否具有指定的权限。 例:创建一个触发器,限定对表EMP的修改时间为周一至周五的早8点至晚5点。 CREATE OR REPLACE TRIGGER biud_CHECK_TIME BEFORE UPDATE OR INSERT OR DELETE ON EMP BEGIN IF (TO_CHAR(SYSDATE,DY) IN (SAT,SUN)) OR TO_CHAR(SYSDATE,HH24) 08 OR TO_CHAR(SYSDATE,HH24)=17 THEN RAISE_APPLICATION_ERROR(-20500,非法时间修改表错误!); END IF; END; 例:限制对表的修改或删除操作的用户只能为‘Obama’或 Hillary create trigger biud_emp before insert or update or delete on emp begin if user not in (Obama, Hillary) then raise
您可能关注的文档
最近下载
- 血糖仪质控规则 .pdf VIP
- 中国矿业大学《学术英语》2021-2022学年第一学期期末试卷.doc VIP
- 2025年南京新工投资集团公司治理结构组织架构和部门职能.docx
- 组织胚胎学教学教案.doc VIP
- 2025年石家庄建设投资集团有限责任公司人员招聘笔试备考试题及答案解析.docx VIP
- 九年级英语感叹句.ppt VIP
- 第3单元第7课+中国传统色(课件)-2025-2026学年+赣美版(2024)初中美术八年级上册.pptx VIP
- Unit 6 How do you feel Part B 课件(共20张PPT)(含音频+视频).pptx VIP
- 拟任县处级党政领导职务政治理论水平任职资格考试第.doc VIP
- 《我们的互联网时代》知识梳理+考点精练(一)(原卷版).docx VIP
原创力文档


文档评论(0)