触发器简介
触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。
触发器可以分为:语句级触发器和行级触发器。
1、在一个表中定义的语句级的触发器,当这个表被删除时,程序就会自动执行触发器里面定义的操作过程。
这个就是删除表的操作就是触发器执行的条件了。
2、在一个表中定义了行级的触发器,那当这个表中一行数据发生变化的时候,比如删除了一行记录,那触发器也会被自动执行了。
--触发器语法:
CREATE [OR REPLACE] TRIGGER TRIGGER_NAME
{BEFORE | AFTER} TRIGGER_EVENT
ON TABLE_NAME
[FOR EACH ROW]
[WHEN TRIGGER_CONDITION]
TRIGGER_BODY
语法解释:
TRIGGER_NAME: 触发器名称
BEFORE | AFTER : 指定触发器是在触发事件发生之前触发或者发生之后触发
TRIGGER_EVENT: 触发事件,在DML触发器中主要为INSERT、UPDATE、DELETE等
TABLE_NAME: 表名,表示发生触发器作用的对象
FOR EACH ROW: 指定创建的是行级触发器,若没有该子句则创建的是语句级触发器
WHEN TRIGGER_CONDITION:添加的触发条件
TRIGGER_BODY: 触发体,是标准的PL/SQL语句块
insert into dept values(50,'数据开发','广州')
create table myemp(
num number,
name varchar2(10),
deptno number);
insert into myemp values(1001,'张三',50);
insert into myemp values(1002,'李四',50);
insert into myemp values(1003,'张三',50);
创建触发器,当删除DEPT表中50号部门的时候,同时删除myemp所有50号部门的员工信息
create or replace trigger delete_dept --创建dept表触发器
after delete or insert or update of deptno --删除部门号字段后 触发 触发器
on dept --
for each row
begin
if deleting then delete from myemp where myemp.deptno=:OLD.deptno;
end if;
end;
delete from dept where deptno=50