PLSQL编写触发器

主题:Oracle学习笔记(8) 使用PLSQL编写触发器

DML 触发器: 
对表执行Insert、Update、Delete操作时激发 
可以用于执行校验、设置初使值、审核改变、甚至禁止某种DML操作 
语法: 
CREATE OR REPLACE TRIGGER 触发器名称 
{AFTER|BEFORE } -- 指定触发时机 
{INSERT OR DELETE OR UPDATE} -- 指定触发器事件 
ON 表名 --指定所监控的表 
{FOR EACH ROW|FOR EACH STATEMENT} -- 指定触发器次数 
BEGIN 
--代码; 
END; 

相关概念: 
AFTER|BEFORE:在什么事件之前或之后执行 
INSERT|DELETE|UPDATE:什么事件 
ON 表名:触发器建在什么表上,即监控什么表 
FOR EACH ROW:行级触发,示例:delete from t1,删除1000行,则执行1000次(一行一次) 
FOR EACH STATEMENT:语句级触发,示例: delete from t1,删除1000行,则执行1次(一句一次) 
:new 行变量:保存事件发生时新数据所在行,只有insert事件和update事件才有新数据 
:old 行变量:保存事件发生时旧数据所在行,只有delete事件和update事件才有旧数据 

示例:指出事件,及事件中的新数据和旧数据 
insert into emp(empno,ename) values(51,'job'); 
分析:只有一行新数据(51,job),对应:new变量。 

update emp set ename='oracle' where empno = 51; 
分析:旧数据 (51,job) ,对应:old变量。 
新数据(51,oracle),对应:new变量。 

delete from emp where empno = 51; 
分析:只有一行旧数据(51,oracle),对应:old变量。 

Sql代码 
1.-- 显示触发器 
2.select trigger_name,status from user_triggers; 
3.-- 禁止触发器 
4.alter trigger tr_emp_salary disable; 
5.-- 激活触发器 
6.alter trigger tr_emp_salary enable; 
7.-- 禁止表的所有触发器 
8.alter table employee disable all triggers; 
9.-- 激活表的所有触发器 
10.alter table employee enable all triggers; 
11.-- 重新编译触发器 
12.--alter table tr_emp_salary compile; 
13.-- 删除触发器 
14.drop trigger tr_emp_salary; 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值