PLSQL编程-触发器【详细讲解】

今天爱分享给大家带来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;

人已赞赏
数据库

PLSQL编程-函数【详细讲解】

2020-10-12 15:40:57

数据库

Oracle 数据备份与恢复 【详细教程】

2020-10-12 15:50:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧