Oracle -触发器
来源:互联网 发布:淘宝上的祛湿茶哪个好 编辑:程序博客网 时间:2024/05/22 04:55
触发器
什么是触发器
数据库触发器是定义一个与表关联的、存储的pl/sql程序。
每当一个特定的数据库操作语句(insert/update/delete)在指定的表上发出时,oracle自动执行触发器中定义的语句序列。
创建触发器的语法
CREATE | or REPLACE | TRIGGER 触发器名{BEEFORE | AFTER }{DELETE | INSERT | (UPDATE | OF 列名)}ON 表名[FOR EACH ROW [WHEN(条件)]]PLSQL 块--BEEFORE | AFTER 用来指明操作前还是操作后调用-- 对于更新操作可以使用一个 of但更新 of 指定的列时才执行触发器。-- FOR EACH ROW 指明触发器的类型
触发器的类型
- 语句级的触发器
在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行。
- 行级触发器
触发语句作用的每一条记录都被触发。在行级触发器中使用:old和:new 伪记录变量,识别值得状态。
- :old和:new 代表 同一条记录
- :old 表示操作改行之前的,这一行的值
- :new 表示操作改行之后的,这一行的值
语句级触发器:针对的是表
行级触发器:针对的是行
应用场景
- 复杂的安全性检查
--禁止某段时间插入数据-- 条件 周六日不可以 ,9点和18点之外不行create or replace trigger securityempbefore inserton Abegin if to_char(sysdate,'day') in ('星期六','星期日') or to_number(to_char(sysdate,'hh25')) not between 9 and 18 then RAISE_APPLICATION_ERROR(-20001, '禁止在非工资时间插入数据'); end if; end;
- 数据的确认
/** 数据不能比增加前变少(涨工资案例)*/create or replace trigger checksalarybefore updateon Afor each row --定义触发器类型为行级,更改每一行都执行触发器begin if :new.num< :old.num then --抛出异常 RAISE_APPLICATION_ERROR(-200002, '数据不能比增加前变少('); end if;end;
- 数据库审计(跟踪数据库的操作,oracle已经单独的提供了数据库审计)
- 数据的备份和同步
1 0
- oracle 触发器
- Oracle触发器
- Oracle触发器
- oracle触发器
- ORACLE触发器
- oracle触发器
- Oracle 触发器
- oracle触发器
- Oracle触发器
- Oracle 触发器
- Oracle 触发器
- Oracle 触发器
- oracle触发器
- oracle 触发器
- Oracle触发器
- oracle触发器
- ORACLE触发器
- ORACLE 触发器
- js高级技巧之高级定时器
- 腾讯云服务器上搭建wordpress博客
- bzoj 2055: 80人环游世界 (有上下界的费用流)
- 【zjnu1248】小明的账单(bill) 堆的应用
- iOS 开发之网络——总结
- Oracle -触发器
- C 指针问题
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- ios transform 动画效果
- Bash-Completion 自动补全
- Caffe梯度传播过程
- 半平面交的模板
- AsyncTask下载文件