Oracle触发器的用途

0.DDL和DML

DDL:data manipulation language,数据操作语言,主要命令有select,update,insert,delete,主要用于对数据库中的数据进行操作

DDL:data definition language,数据定义语言,主要命令有create,alter,drop,主要用于定义和修改表

DCL:data contral language,数据控制语言,主要命令有grant,rollback,commitdeng,主要用于授权或收回访问数据库的某种权限,并控制数据库操事务发生的时间及效果,对数据库进行监视。

1.触发器的用途

(1)完成表的变更校验,当表中的数据发生insert、update或者delete等DML操作时,提供验证逻辑,验证更改数据的正确性、检查完整性约束、记录事件日志等。

(2)自动数据库维护,使用系统级的触发器,可以在数据库系统启动或者退出时,通过触发器完成系统初始化和清楚操作。

(3)控制数据库管理活动,使用触发器精细管理和控制数据库中的数据库管理活动,若删除或修改表等DDL操作,保证DDL操作的检查。

2.触发器的分类

根据触发的实际和影响的行数,可以分为4类

  • 行触发器和语句触发器
  • before触发器和after触发器
  • instead of触发器
  • 系统事件触发器和用户事件触发器,数据库启动,服务器错误消息事件触发属于系统事件;用户登录或退出,执行DDL或DML语句属于用户事件

 根据触发器所创建的语句及影响的对象不同,可分为3类

  • DML触发器,表的增、删、改,可以是行触发器、语句触发器、before触发器、after触发器
  • 系统触发器,对数据库实例活某个用户模式进行操作时的触发器,可以使数据库系统触发器和拥护触发器
  • 替代触发器,对视图进行操作时定义的触发器

3.触发器的写法

CREATE [OR REPALCE] TRIGGER trigger_name

[BEFORE | AFTER | INSTEAD OF] triggering_event

[referencing_clause]

[WHEN trigger_condition]

[FOR EACH ROW]

trigger body

  • trigger_name:触发器的名称
  • triggering_event:引发触发器的事件,如对一个表或视图进行DML操作
  • referencing_clause:替换名字用
  • trigger_condition:用来指定触发的条件,当触发器定义中包含WHEN语句时,将先求值,当值为True时,才执行触发器
  • FOR EACH ROW:指定该字句表示创建的是行级的出尕其,否则创建的是语句级的触发器
  • trigger_body:指定触发器的执行代码区,是一个标准的PL/SQL块。

触发器代码不能超过32KB,过大时分隔为多个存储过程,使用CALL调用存储过程。

触发器代码只能包含DML语句,不能包含DDL语句。 

4.具体实践

(1)限制对表的更新修改

(2)实现表的自动更新

(3)提供日志记录

附:

 

 

主要是学习Oracle PL/SQL从入门到精通这本书的总结和实践

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值