今天爱分享给大家带来PLSQL编程-触发器【详细讲解】,希望能够帮助到各位。
一、含义
当用户执行了 insert | update | delete 这些操作之后,可以触发一系列其它的动作、业务逻辑,使用触发器可以协助应用在数据库端确保数据的完整性、日志记录 、数据校验等操作。使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在Oracle触发器不仅支持行级触发,还支持语句级触发
二、分类
触发器类型 | NEW 和 OLD的使用 |
---|---|
INSERT 型触发器 | NEW 表示将要或者已经新增的数据 |
UPDATE 型触发器 | OLD 表示修改之前的数据 , NEW 表示将要或已经修改后的数据 |
DELETE 型触发器 | OLD 表示将要或者已经删除的数据 |
三、语法
1、创建触发器
create trigger 触发器名称 before|after insert|update|delete on 表名称 [for each row]--行级触发器 declare --声明部分 begin --业务逻辑 end;
2、修改触发器
create [or replace] trigger 触发器名称 before|after insert|update|delete on 表名称 [for each row]--行级触发器 declare --声明部分 begin --业务逻辑 end;
3、删除触发器
drop trigger 触发器名称;
四、演示
1、INSERT 型触发器
--新员工入职之后,输出一句话: 欢迎加入我们 create or replace trigger tri_emp_insert after insert on emp declare begin dbms_output.put_line('欢迎加入我们'); end; --插入数据就可以自动触发触发器 insert into emp(empno, ename) values(9527, '马哈哈');
2、UPDATE 型触发器
--判断员工涨工资后的工资一定要大于涨工资前的工资 create or replace trigger tri_emp_update_sal before update on emp for each row declare begin if :old.sal > :new.sal then raise_application_error(-20002,'旧的工资不能大于新的工资'); end if; end; --更新数据就可以自动触发触发器(无异常) update emp set sal = sal + 10; select * from emp; --更新数据就可以自动触发触发器(有异常) update emp set sal = sal - 100; select * from emp;
3、DELETE 型触发器
--老员工离职之后,输出一句话: 有员工离职了 create or replace trigger tri_emp_delete after delete on emp declare begin dbms_output.put_line('有员工离职了'); end; --删除数据就可以自动触发触发器 delete from emp where empno = 9527;
4、删除触发器
drop trigger tri_emp_insert; drop trigger tri_emp_update_sal; drop trigger tri_emp_delete;