用PL/SQL Developer创建Oracle触发器以及触发器的一点点知识与出现的问题

摘自:http://blog.csdn.net/asdsa108/article/details/50540320


本文将介绍如何使用PL/SQL Developer快速的创建一个Oracle触发器,应该明确的是鼠标的所有操作都是可以用代码实现的


一、打开PL/SQL Developer,登录到数据库


二、在左侧Objects上右击,选new


左侧如果没有Objects,在菜单里按Tools,下拉菜单中选中Object Browser


三、弹出对话框


其中

1.Name是触发器名称

2.Fires是触发时间,选项包括before、after以及instead of

先介绍before和after,顾名思义,before是触发事件执行前触发,after是触发事件执行后触发,触发顺序如下

1.        执行 BEFORE语句级触发器;

2.        对于受语句影响的每一行:

l         执行 BEFORE行级触发器

l         执行 DML语句

l         执行 AFTER行级触发器 

3.        执行 AFTER语句级触发器 

语句级和行级触发器见5

instead of不介绍了,详细可以到我转载的文章里看http://blog.csdn.net/asdsa108/article/details/50540221#t8

3.Event是触发事件,包括insert、update、delete,实际上还可以加上or进行连接,如insert or update

4.Table or view选择表或视图

5.Statement Level?该选项选择是语句级触发器还是行级触发器,介绍如下

行触发器要求当一个DML语句操作影响数据库中的多行数据时,对于其中的每个数据行,只要它们符合触发约束条件,均激活一次触发器;而语句触发器将整个语句操作作为触发事件,当它符合约束条件时,激活一次触发器。当省略FOR EACH ROW 选项时,BEFORE AFTER 触发器为语句触发器,而INSTEAD OF 触发器则只能为行触发器

Statement level总结:针对语句执行的则勾选,只触发一次,代码中没有For each row;针对语句操作的数据行则不勾选,每条受语句影响且符合触发条件的数据,都会触发一次触发器,代码中有For each row。

四、根据需求选好后,进入Sql语句框(没写完,后面给个例子好了)

随便找的例子:

[sql]  view plain  copy
  1. CREATE OR REPLACE TRIGGER tr_reg_cou  
  2. AFTER update OF region_id  
  3. ON regions  
  4. FOR EACH ROW  
  5. BEGIN  
  6.  DBMS_OUTPUT.PUT_LINE('旧的region_id值是'||:old.region_id  
  7.                   ||'、新的region_id值是'||:new.region_id);  
  8.  UPDATE countries SET region_id = :new.region_id  
  9.  WHERE region_id = :old.region_id;  
  10. END;  

想要取更改前后数据使用:old/new加上字段名,要注意old、new之前必须加冒号

最后F8运行,没问题的话触发器就开始运行了

延伸阅读:DML触发器相关知识

    触发器名与过程名和包的名字不一样,它是单独的名字空间,因而触发器名可以和表或过程有相同的名字,但在一个模式中触发器名不能相同。 

DML触发器的限制

l         CREATE TRIGGER语句文本的字符长度不能超过32KB

l         触发器体内的SELECT 语句只能为SELECT … INTO …结构,或者为定义游标所使用的SELECT 语句。

l         触发器中不能使用数据库事务控制语句 COMMIT; ROLLBACK, SVAEPOINT 语句;

l         由触发器所调用的过程或函数也不能使用数据库事务控制语句;

l         触发器中不能使用LONG, LONG RAW 类型;

l         触发器内可以参照LOB 类型列的列值,但不能通过 :NEW 修改LOB列中的数据; 

DML触发器基本要点

l         触发时机:指定触发器的触发时间。如果指定为BEFORE,则表示在执行DML操作之前触发,以便防止某些错误操作发生或实现某些业务规则;如果指定为AFTER,则表示在执行DML操作之后触发,以便记录该操作或做某些事后处理。

l         触发事件:引起触发器被触发的事件,即DML操作(INSERTUPDATEDELETE)。既可以是单个触发事件,也可以是多个触发事件的组合(只能使用OR逻辑组合,不能使用AND逻辑组合)。

l         条件谓词:当在触发器中包含多个触发事件(INSERTUPDATEDELETE)的组合时,为了分别针对不同的事件进行不同的处理,需要使用ORACLE提供的如下条件谓词。

1)。INSERTING当触发事件是INSERT时,取值为TRUE,否则为FALSE

2)。UPDATING [column_1,column_2,…,column_x]当触发事件是UPDATE      时,如果修改了column_x列,则取值为TRUE,否则为FALSE。其中column_x是可选的。

3)。DELETING当触发事件是DELETE时,则取值为TRUE,否则为FALSE

解发对象:指定触发器是创建在哪个表、视图上。

l         触发类型:是语句级还是行级触发器。

l         触发条件:WHEN子句指定一个逻辑表达式,只允许在行级触发器上指定触发条件,指定UPDATING后面的列的列表 

  问题:当触发器被触发时,要使用被插入、更新或删除的记录中的列值,有时要使用操作前、        后列的值.

  实现:  :NEW 修饰符访问操作完成后列的值

            :OLD 修饰符访问操作完成前列的值 

特性

INSERT

UPDATE

DELETE

OLD

NULL

实际值

实际值

NEW

实际值

实际值

NULL



出现的问题

当触发器触发条件是对某表的DML操作时,触发器不能对该表再进行DML操作

如触发条件是after update table,触发执行update table,则会报错【表table发生了变化,触发器/函数不能读它】

修改方法只能是触发执行update table2,因为触发的DML命令还没有commit执行完毕就不能执行触发器里的语句


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PL/SQL Developer是一个强大且功能丰富的集成开发环境(IDE),专门用于开发和调试PL/SQL程序。它提供了许多强大的功能,帮助开发人员更高效地编写和维护PL/SQL代码。 PL/SQL Developer使用手册是一本详细说明了PL/SQL Developer的各种功能和用法的指南。它被设计成易于理解和操作,以帮助用户快速上手并掌握PL/SQL Developer的各种功能。 在使用手册,用户可以找到关于如何安装和配置PL/SQL Developer的详细说明。它还提供了关于如何创建新项目和连接到数据库的步骤。对于那些已经熟悉PL/SQL开发的用户,使用手册还提供了如何使用PL/SQL Developer来编辑、编译和调试PL/SQL代码的详细说明。 使用手册还介绍了PL/SQL Developer的一些高级功能,如代码自动完成、代码调试器、性能调优等。这些功能可以使开发人员更高效地开发和调试PL/SQL代码,并提高代码的质量和性能。 除了详细的功能说明,使用手册还提供了一些实用的技巧和建议,帮助用户更好地利用PL/SQL Developer的各种功能。例如,如何使用快捷键、如何管理和组织代码等。 总之,PL/SQL Developer使用手册是一个非常有价值的工具,它可以帮助开发人员更好地掌握和使用PL/SQL Developer。通过仔细阅读和使用手册的指导,用户可以更加高效地开发和维护PL/SQL代码,并提高开发效率和代码质量。 ### 回答2: PL/SQL Developer是一款功能强大的数据库开发工具,主要用于编写、调试和优化Oracle数据库的PL/SQL程序。以下是对PL/SQL Developer使用手册的解读和概述。 首先,手册提供了详细的安装和配置指南。用户可以根据手册的步骤进行软件安装和数据库连接的配置,确保程序可以正常运行。 其次,手册介绍了PL/SQL Developer的基本功能和界面。用户可以了解如何打开和关闭编辑器、如何管理和组织数据库对象、如何执行SQL查询和PL/SQL程序等。手册还提供了快捷键和常用功能的说明,帮助用户更高效地操作和开发。 手册还详细介绍了PL/SQL调试功能。通过手册的指南,用户可以了解如何设置断点、查看变量值、单步执行程序等。这些调试功能对于程序的调试和错误排查非常有帮助。 此外,手册还提供了丰富的SQLPL/SQL语法参考。用户可以查阅手册的语法规则和示例,以便正确地编写和优化代码。手册还介绍了常用的编程技巧和性能优化建议,帮助用户提高开发效率和程序执行效果。 最后,手册还包含了一些高级主题,如数据库安全、数据复制、数据迁移等。用户可以根据需求选择阅读这些主题,了解更多关于数据库管理和开发的实践经验和技巧。 总而言之,PL/SQL Developer使用手册是一份详尽的指南,提供了全面的功能介绍、操作指南和参考文档。用户可以通过阅读手册,掌握PL/SQL Developer的使用技巧,提高数据库开发效率和程序质量。 ### 回答3: PL/SQL Developer是一款功能强大的数据库开发工具,可以提高PL/SQL开发人员的工作效率和编码质量。下面是一个关于PL/SQL Developer使用手册的简要介绍: PL/SQL Developer的使用手册包含了详细的功能介绍和使用指南。在手册,可以找到关于如何安装和配置PL/SQL Developer的步骤,以及如何连接和管理多个数据库的说明。手册还包括了一个演示数据库,可以帮助用户快速上手并熟悉工具的各项功能。 手册的主要部分是关于SQLPL/SQL的编辑和调试的说明。这些说明详细介绍了如何使用PL/SQL Developer的编辑器来编写和修改SQL语句和存储过程。手册还提供了一些有关调试和性能优化的技巧,以帮助开发人员在开发过程更加高效地解决问题。 除了SQLPL/SQL的编辑和调试,手册还包含了其他一些有用的功能介绍。例如,手册指导用户如何使用版本控制和团队协作功能来提高团队开发的效率。手册还介绍了如何使用代码搜索和替换工具,以及如何使用数据字典和表达式编辑器来更方便地访问和管理数据库对象。 总的来说,PL/SQL Developer使用手册是一个详细而全面的资源,可以帮助开发人员快速上手并熟练使用这个强大的开发工具。对于初学者来说,手册提供了一个系统的学习路径,帮助他们逐步掌握各种功能。对于有经验的开发人员来说,手册提供了一些高级技巧和最佳实践,可以进一步提高他们的开发效率和数据库管理能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值