计算机专业复习资料.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机专业复习资料

一、触发器 触发器是一种特殊类型的存储过程,当触发表执行DML操作时被Oracle系统自动执行。触发器可以实现复杂的数据完整性规则,达到保护触发表中数据的目的。 1、触发器的类型 (1)按触发事件的不同,触发器可以分为插入型(INSERT)、更新型(UPDATE)和删除型(DELETE)触发器。 (2)根据指定的事件和触发器执行的先后次序,触发器可以分为BEFORE型和AFTER型触发器。 如果在指定的事件(INSERT、UPDATE或者DELETE)之前执行触发器,这类触发器称为BEFORE触发器,若在指定的事件之后执行触发器,则称这类触发器为AFTER触发器。 (3)根据触发的级别的不同,触发器可以分为行触发器和语句触发器。 对于行触发器受触发器事件的影响的每一行都将引发触发器的执行;而对于语句触发器,触发事件只触发一次,即使有若干行受触发事件的影响,也只执行一次触发操作。 2、创建触发器注意事项 Oracle提供了SQL Developer和PL/SQL语句两种方式创建触发器。创建触发器时,在触发器内可以包含各种PL/SQL语句,但以下情况除外: 触发器不可以在定义它的表上执行DML操作; 触发器不可以执行COMMIT、ROLLBACK或者SAVEPOINT语句,而且也不可以调用包含这些语句之一的存储过程或者函数; 不可以在触发器中声明LONG或者LONG RAW变量。 3、使用PL/SOL创建触发器 使用PL/SOL中的CREATE TRIGGER命令可任意用来创建触发器,其基本语法格式为: CREATE [OR REPLACE] TRIGGER[用户方案.]触发器名 BEFORE|AFTER|INSTEAD OF INSERT |[OR]DELETE|[OR]UPDATE [OF列1,…N] ON [用户方案.]表名|视图名 [FOR EACH ROW[WHEN条件表达]] BEGIN PL/SQL语句 END [触发器名]; 例:1)为用户方案SCOTT的客户表CUSTOMER创建插入型触发器,当添加新客户信息时,显示“欢迎新客户注册!”。 CREATE OR REPLACE TRIGGER SCOTT.TRG_ADDCUSTOMER1 AFTER INSERT ON SCOTT.CUSTOMER BEGIN DBMS_OUTPUT.PUT_LINE(欢迎新客户注册!); END TRG_ADDCUSTOMER1; --输入下面的INSERT命令验证结果: INSERT INTO CUSTOMER (CUSTID, CUSTNAME) VALUES(C080113002, 陈莉); (2)为用户方案SCOTT的客户表CUSTOMER创建删除型触发器,当删除客户信息时,显示删除客户记录的信息。 CREATE OR REPLACE TRIGGER TRG_REMOVECUSTOMER BEFORE DELETE ON CUSTOMER FOR EACH ROW BEGIN DBMS_OUTPUT.PUT_LINE(待删除的记录为:); DBMS_OUTPUT.PUT_LINE(:OLD.CUSTID|| || :OLD.CUSTNAME); END TRG_REMOVECUSTOMER; --输入下面的DELETE命令验证结果: DELETE CUSTOMER WHERE CUSTID = C080113001; 4、使用PL/SQL查看触发器 例:查看用户方案SCOTT中所有触发器的名称,触发类型,触发事件,所有者和触发表等信息。 Select trigger_name 触发器名, Trigger_type 触发器类型, Triggering_event 触发事件, Table_name 触发表 From user_triggers; 5、使用PL/SQL修改触发器 修改触发器和修改视图类似,虽然ORACLE也提供ALTER TRIGGER命令?,但它只用于重新编译或者验证现有触发器。如果需要修改触发器的定义,则仍然使用create or replace trigger命令。 例:修改用户方案SCOTT的触发器PRC_ADDCUSTOMER1,当在客户表CUSTOMER中添加新纪录时,显示“欢迎您,XYZ”(XYZ为客户姓名)的信息。 (1)修改触发器TRG_ADDCUSTOMER1: CREATE OR REPLACE TRIGGER TRG_ADDCUSTOMER1 AFTER INSERT ON CUSTOMER FOR EACH ROW BEGIN DBMS_OUTPUT.PUT_LINE(欢迎您, || :NEW.CUSTNAME); END TRG_ADDCUSTOME

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档