oracle数据库对象--触发器(TRIGGER)
2018-02-06 20:49
375 查看
触发器 TRIGGER
一向百毒不侵的我竟然在这个关节眼上感冒了,脑袋也昏昏的,一迷糊就不知道在想什么,贼难受,咳咳咳咳.今天介绍一下,oralce 数据库中的另一个基本对象–触发器,如果你了解了存储函数和存储过程,那么了解触发器就特别简单了,因为本身触发器也是一块pl/sql程序块,有定义,有声明,有执行等等,然而和存储函数或过程不同的是:过程和函数是需要外界调用,或主动调用才能执行的,而触发器则是触发器是有一个事件来启动和运行的,也就是当事件发生时,隐式的触发执行的,且触发器不能接受参数。
oracle事件包括 对表的 insert update delete 以及对视图的相应操作。该篇主要介绍关于dml触发器,其他的替代触发器和系统触发器,有需要的可以去了解。
触发器4个基本组成:
(1)触发事件:即在什么事件发生时触发,常见事件如 insert ,update,delete;
(2)触发时间:这里的时间是相对于事件发生前后来说的,可以定义在事件发生之前和事件发生之后 before | after
(3)触发器本身:这是关键,也就是我们为什么要创建这个触发器,要用它做什么,触发器的主体,一段pl/sql程序块
(4)触发器频率:说明触发器内,在事件发生时,触发的频率,常见有语句级触发器和行级触发器,语句级就是该条语句执行一次,触发器触发一次,而行级触发器则是每操作一行就执行一次触发器,定义时需要添加(for each row)
基本格式:
CREATE [OR REPLACE] TRIGGER trigger_name
{before | after}
{insert | update | delete}
on table_name
[for each row]
[where condition]
begin
执行体
end;
直接看两个示例吧
//在每删除员工表的一条记录时就将要删除的数据,拷贝到员工删除表中; create table delemp as select * from emplooyees where 1=2; ------------------------------------------------ create or replace trigger copy_tri before //删除之前触发 delete on employees for each row //删除每一行数据都触发 begin insert into delemp(employee_id,last_name,salary) values(:old.employee_id,:old.last_name,:old.salary); end; //这里提一下关于:old ,和:new :old 代表修饰符访问操作完成前的值; :new 代表修饰符访问操作完成后的值。
当删除表和视图时,该表所对应的触发器也会删除,我们也可以使用语句
drop trigger trigger_name;
后续完善,头疼的厉害。。。
相关文章推荐
- 如何获取Oracle数据库中某表及索引、约束、触发器、对象权限的创
- 如何获取Oracle数据库中某表及索引、约束、触发器、对象权限的创
- 删除oracle数据库用户的dba权限(当出现同一用户DBA可以登录,normal不能登录)“无法对SYS拥有的对象创建触发器”
- Oracle数据库自动备份SQL文本:Procedure存储过程,View视图,Function函数,Trigger触发器,Sequence序列号等
- 12.数据库对象----触发器(trigger)
- 148.Oracle数据库SQL开发之 大对象——在PLSQL中使用大对象
- sp_depends 被检查相关性的数据库对象。对象可以是表、视图、存储过程或触发器 in sql server
- oracle数据库增删改查,序列,触发器
- 【Oracle】详解ORACLE中的trigger(触发器)
- Oracle 中重新编译无效的存储过程, 或函数、触发器等对象
- PL/SQL 07 触发器 trigger
- 手动释放oracle数据库中死锁的对象锁!
- PL/SQL查询oracle数据库对象
- 5-(初学)Oracle数据库对象权限总结
- Oracle数据库(十二)触发器
- 触发器(五)Trigger_Insert_VocHour
- SQLite 触发器(Trigger)
- Oracle: 删除当前用户的所有对象(表、视图、触发器、存储过程、函数)
- RPG游戏主角状态机(Trigger触发器)
- mysql之触发器trigger ---谷营中西