- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
触发器 主讲:申友访 邮箱:10bigbull@163.com 触发器概述 数据库触发器存储在与某个指定的数据库表关联的PL/SQL程序单元中。只要SQL操作影响到表时,oracle就自动执行数据库触发器。所以,这些触发器被隐式地调用。 触发器的使用 触发器可用于: 自动生成最初的列值; 防止无效事务; 加强复杂的安全授权; 提供透明的时间日志; 搜集表访问的统计; 自动获取列值; 限制DML操作在某一事段内进行。 触发器的创建 语法如下: Create or replace trigger 触发器名 Before | after --指定是在完成操作前还是操作后触发触发器 Insert [or delete] [or update] of 列名 on 表名 [for each row] --指定每行触发一次,默认情况下,数据库触发器每个表触发一次 [When (条件)] declare ------ Begin -------- exception -------- End; 触发器举例 例:当把某一部门从dept表删除后,就删除emp表中的该部门的所有信息。 create or replace trigger pd3after delete on deptfor each rowbegin dbms_output.put_line(deleting......); delete from emp where deptno = :old.deptno;end; 说明:在程序中,可以使用前缀“:new”和“:old”, “:new”表示更改后的值,而“:old”表示更改或删除之前的值。 注意事项 所有者必须对所有触发器操作所引用的对象有适当的访问权限。 在BEGIN…END程序块中,不能使用commit和rollback事务控制语句。 触发器操作的选择 与insert,update和delete相对应的执行谓词如下所示: If inserting then insert into …. end if; If updating then update …. end if; If deleting then delete …. end if; INSTEAD OF 触发器 此触发器对那些由于基本表包括连接而不能直接通过“INSERT”、 “UPDATE”和“DELETE”语句修改 的试图提供了明晰的修改方法。 INSTEAD OF 触发器格式: CREATE TRIGGER 触发器名 INSTEAD OF INSERT|UPDATE|DELETE ON 视图名 BEGIN …… END; 创建触发器的限制 主体中 可以包括“DML SQL”语句,但“SELECT”语句必须为“SELECT INTO”语句或必须在游标声名中; 触发器的主体中不允许有DDL声名; 不允许有事务控制语句(COMMIT、ROLLBACK、SAVEPIONT); 如果所存储的子程序被触发器调用,则它不能包括事务控制语句; “LONG”和“LONG RAW” 类型的变量不能作为“:old”或“:new”值使用。 触发器的启用与禁用 可以启用也可以禁用触发器。默认情况下,所有触发器在首次创建时就是启用的。 ALTER TRIGGER 触发器名 DISABLE; ALTER TRIGGER 表名 DISABLE ALL TRIGGERS; ALTER TRIGGER 触发器名 ENABLE; ALTER TRIGGER 表名 ENABLE ALL TRIGGERS; 删除触发器 DROP TRIGGER 触发器名; RAISE_APPLICATION_ERRORS(error_number,message); --其中“error_number”的值一般取-20000到-20999范围内的负整数。 * * *
您可能关注的文档
最近下载
- 加气混凝土砌块墙面抹灰技术交底大全.docx VIP
- 六年级上册数学第四单元《解决问题的策略—假设》教学课件(苏教版).pptx VIP
- 【春秋航空 空客A320】ATA 32 起落架-2.pdf VIP
- 《环境工程原理》课后习题答案.pdf VIP
- 路清扫保洁项目策划投标文件.doc VIP
- 补肾化痰通经汤:开启肾虚痰瘀型青春期闭经治疗新路径.docx
- 《高等教育学概论》.docx VIP
- ISO IEC 20000-10-2018 信息技术- 服务管理- 第10部分: 概念和词汇(中文版).pdf
- 人民警察内务条令试题及答案.pdf VIP
- 中国重症肌无力诊断和治疗指南2025.docx VIP
原创力文档


文档评论(0)