oracle文档第九章触发器(1)
第九章节 :触发器编码
触发器是存储在数据库存中隐式的运行或者被触发的一段程序,当某些事件发生。通常情况下,触发器中支持可执行的一段pl/sql代码块,当一个insert,update,或者delete命名发生在一个表或者视图上的时候。其也支持系统和数据库或者方案事件.oracle数据库也支持触发器中含有可执行的pl/sql或java程序.
该章节讨论dml触发器,instead of 触发器和系统触发器(数据库/方案触发器),内容如下:
设计触发器
创建触发器
触发器核心代码
编译触发器
修改已有的触发器
(enabling and disabling triggers)使用和[disabling]角发器
查看触发器相关的信息
触发器实例代码
用触发器响应[responding]系统事件
9.1设计触发器
在设计触发器时,使用下列设计原则
触发器用来保证当一个特定的操作被执行时,和该操作相关的动作也被执行。
当一个重复[duplicate]功能在数据库中存在,此时要避免使用触发器。例如,如果能用数据完敕性约束来实现维不合法的数据存储到数据库时,就没有必要使用触发器来实现相同的功能。[refect]拒绝
限制触发器程序代码的大小,如果触发器的实现逻辑需要超过60行代码,那么最好把大量的代码存储在一个存储过程中,然后在触发器中调用该存储过程。
regardless of[无论] 无论是用户或者数据库[issues]触发器事件,触发器是仅仅用来[centralized]集中公共的操作被调用。
不要创建[recursive]递归性的触发器。如,创建一个在Emp_tab after update语名的触发器,在该表中又定义了一个update 语句,使该触发器递补归的被调用直到内存溢出。
要明知[judiciously]的用触发器,它在每个用户,任何时间被执行,当事件发生在已经定义好的触发器上.
9.2创建触发器
可以使用任何[interactive]互相交互的工具,如sql*plus 或enterprise manager,用CREATE TRIGGER statement命令来创建.在使用交互工具编写完触发器时,在程序末尾加上('/')字符是[necessary]必要的,来使刚创建的触发器激活[activate]。
如下命令在emp_tab表上创建一个触发器:
CREATE OR REPLACE TRIGGER Print_salary_changes
相关文档:
记得以前上OCP课程的时候那个老师教我们使用PROFILE来限制用户的一些操作,那个时候估计是老师偷懒吧,所有实验都是通过OEM的形式来操作,根本不会涉及到命令行。
平时在学习ORACLE的过程中好像也很少碰到关于PROFILE的问题,今天逛一个朋友的BLOG的时候发现这篇文章,觉得挺好的,内容不多,简洁明了,好歹也算是个命令行 ......
如何定义游标类型
TYPE ref_type_name IS REF CURSOR [RETURN return_type];
声明游标变量
cursor_name ref_type_name;
从技术底层看,两者是相同的。普通plsql cursor在定义时是“静态”的。而Ref cursors可以动态打开。
例如下面例子:
Declare
type rc is ref cursor;
cursor c is select * from dual ......
Oracle在自己机器上装一个有必要的,毕竟有时候需要自己在家学习一下,但电脑不是自己用的,还是写个批处理解决一下,需要的时候点击一下启动,不需要就停止,很方便。这里将脚本给大家写一个,欢迎大家粘贴拷贝。
首先,自己先将自己的自动启动服务关闭,并记录一下,然后替换脚本中相应的服务名称即可。自己粘贴出 ......
oracle中连接与会话不是一个概念!!!
在Oracle中,连接只是客户进程和数据库实例之间的一条特殊线路,最常见的就是网络连接。这条连接可能连接到一个专用服务器进程,也可能连接到调度器。如前所述,连接上可以有0个或多个会话,这说明可以有连接而无相应的会话。另外,一个会话可以有连接也可以没有连接。使用高级Oracle N ......