oracle触发器的作用是什么,oracle触发器哪个字段触发
神谕官方参考:PL/SQL语言引用c- 9 PL/SQL触发器
使用触发器的原因:
自动生成计算的列值
记录事件
收集表格访问的统计数据
针对视图发布DoctorofModernLanguages现代语言博士语句时,修改表格数据
当子表和父表位于分布式数据库的不同节点上时,实施参照完整性
向订阅应用程序发布有关数据库事件、用户事件和结构化查询语言语句的信息
防止在正常工作时间之外对一个表进行DoctorofModernLanguages现代语言博士操作
防止无效交易
实施您无法用约束定义的复杂业务或参照完整性规则
本人E比较差,防止误导别人,也就不一一解释。
触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能像存储过程一样接收参数甲骨文。事件指的是对数据库的表进行的插入、更新及删除操作或对视图进行类似的操作甲骨文。将触发器的功能扩展到了触发甲骨文,如数据库的启动与关闭等。所以触发器常用来完成由数据库的完整性约束难以完成的复杂业务规则的约束,或用来监视对数据库的各种操作,实现审计的功能。
现代语言博士现代语言博士触发器
神谕可以在现代语言博士现代语言博士语句进行触发,可以在现代语言博士现代语言博士操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发。
数据定义语言触发器
由于在神谕里,不能直接对由两个以上的表建立的视图进行操作。所以给出了替代触发器。
数据库事件触发器
神谕提供了第三种类型的触发器,数据库事件触发器也叫系统触发器。它可以在神谕数据库系统的事件中进行触发,如神谕系统的启动与关闭等。
触发器组成部分
1、 触发器名称
2、 触发语句
3、 触发器限制
4、 触发操作
触发器设计指南:
使用触发器来确保每当特定事件发生时,任何必要的动作都被完成(无论哪个用户或应用程序发出触发语句)。
例如,使用触发器来确保每当有人更新表时,其日志文件也会更新。
不要创建复制数据库特征的触发器。
例如,如果可以对约束执行同样的操作,就不要创建拒绝无效数据的触发器。
不要根据结构化查询语言语句处理行的顺序(可能不同)创建触发器。
例如,如果变量的当前值依赖于行触发器正在处理的行,则不要在行触发器中为全局包变量赋值。如果触发器更新全局包变量,请在以前语句触发器中初始化这些变量。
在行数据写入磁盘之前,使用行前触发器修改行。
使用行后触发器获取行身份并在操作中使用。当触发语句导致ORA-2292时,将触发后排触发器。
如果以前语句触发器的触发语句是与正在运行的更新语句冲突的更新或删除语句,则
数据库透明地回滚到保存点,并重新启动触发语句。在触发语句之前,数据库可以多次这样做
成功完成。每次数据库重新启动触发语句时,都会触发触发器。回滚到保存点不会撤消对包的更改
触发器引用的变量。要检测这种情况,请在包中包含一个计数器变量。
不要创建递归触发器。
例如,不要创建在定义触发器的表上发出更新语句的更新后触发器。
触发器递归激发,直到耗尽内存
明智地使用数据库触发器。每当任何数据库用户启动触发事件时,它们都会触发。
如果触发器运行以下语句,该语句返回触发器的所有者,而不是更新表的用户:
从用户中选择用户名;
只有承诺才会引发火灾。
在创建触发器的创建触发器语句成功后,隐式提交触发器。
因此,以下语句不能激发它创建的触发器:
创建或替换触发器我的触发器
在数据库上创建后
开始
空
结束;
/
为了允许模块化安装在相同表上具有触发器的应用程序,创建相同类型的多个触发器,而不是
运行一系列操作。每个触发器都会看到先前触发的触发器所做的更改。每个触发器都可以看到旧值和新值。