博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle 学习笔记之触发器
阅读量:6839 次
发布时间:2019-06-26

本文共 1050 字,大约阅读时间需要 3 分钟。

说明
数据库触发器是一个与表相关联的、存储的PL/SQL程序。

每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自己主动地运行触发器中定义的语句序列。

触发器的类型
语句级触发器:在指定的操作语句操作之前或之后运行一次,无论这条语句影响了多少行 。
行级触发器(FOR EACH ROW):触发语句作用的每一条记录都被触发。

在行级触发器中使用old和new伪记录变量, 识别值的状态。

触发器可用于:1)数据确认  2)实施复杂的安全性检查.3)做审计,跟踪表上所做的数据操作等.4)数据的备份和同步

触发器语法:

CREATE  [or REPLACE] TRIGGER  触发器名   {BEFORE | AFTER}   {DELETE | INSERT | UPDATE [OF 列名]}   ON  表名   [FOR EACH ROW [WHEN(条件) ] ]PLSQL 块

触发语句与伪记录变量的值:

触发语句

:old

:new

Insert

全部字段都是空(null)

将要插入的数据

Update

更新曾经该行的值

更新后的值

delete

删除曾经该行的值

全部字段都是空(null)

案例1:限制非工作时间向数据库插入数 周六 周日 以及工作时间的非8点到18点的时间段是不能够在emp2表中插入数据的!

create or replacetrigger myTriggerbefore insert on emp2begin  if to_char(sysdate,'day') in('星期六','星期日') or  to_number(to_char(sysdate,'hh24')) not between 8 and 18 then  raise_application_error(-20001,'不能在飞工作时间插入数据');  end if;end;

案例二: 确认数据(检查emp表中sal 的改动值不低于原值)也就是说你仅仅能给员工涨工资儿不能减工资!

create or replacetrigger checkSalbefore update of sal on emp2for each row declarebegin  if :new.sal<:old.sal then  raise_application_error(-20002,'更新薪水比之前的小。');  end if;end;
你可能感兴趣的文章
我的友情链接
查看>>
mysql读写分离实战
查看>>
使用Kubespray部署生产可用的Kubernetes集群(1.11.2)
查看>>
MPICH2(r8733)的错误容忍
查看>>
我的友情链接
查看>>
Python:contextlib模块——上下文管理器工具
查看>>
数制之十进制转成其他进制
查看>>
运用bind()和connect()函数
查看>>
帧、数据报、段、Frame Datagram Segment Packet Fragment
查看>>
推荐一款免费的AD审计工具------Netwrix AD变更通知工具
查看>>
Xcode8控制台输出大量无用信息的解决方案
查看>>
【简单的留言本】用HTML新增的数据库实现
查看>>
asp.net4 报 “请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理”...
查看>>
OpnAI将可预测序列中下一段文字、图像和语音
查看>>
PowerQuery与PowerPivot将引爆你的桌面级数据分析:能量巨大,超出你想象!
查看>>
钱找上门来了,你做好准备了吗?(采购成熟稳定软件模块、按统一要求修正)...
查看>>
硬盘无法访问由于IO设备错误,无法运行此项请求,里面的资料怎么寻回
查看>>
老友记台词笔记S0101-ijk英语
查看>>
LAMP环境搭建WordPress博客
查看>>
Oracle 数据库 数据文件 表 表空间 用户的关系(转)
查看>>