oracle教程:前置触发器和后置触发器

什么是触发器

要点:
1、触发器:当一个指定的语句执行增删改的操作时。Oracle自动执行了触发器中自定义的数据库函数。
2、前置触发器:在增删改操作没有commit之前执行的出发器叫前置触发器。
3、后置触发器:在增删改操作commit之后执行的触发器叫后置触发器。

触发器语法

要点:
1、行级触发器:针对表中每行数据变化进行操作。
2、语句级触发器:针对每张表进行操作的触发器。
3、:old 修改前的数据。Update 和 delete。
4、:new 修改后的数据。Insert 和 update。
5、语法:

CREATE [or REPLACE] TRIGGER 触发器名
BEFORE | AFTER
[DELETE ][[or] INSERT] [[or]UPDATE [OF 列名]]
ON 表名
[FOR EACH ROW ][WHEN(条件) ]
declare
……
begin
PLSQL 块
End

在这里插入图片描述
在这里插入图片描述

前置触发器

要点:根据例子理解如何创建前置触发器。

--需求:当用户输入本月累计表数后,自动计算出本月使用数 。
create or replace trigger tri_account_num1
before
update of num1
on t_account 
for each row
declare

begin 
  --通过伪记录变量修改usenum字段的值num1(水表现在的数值),num0(上个月使用的水表数)
  :new.usenum := :new.num1-:new.num0;
end;

后置触发器

要点:根据例子理解如何创建后置触发器。

--需求:当用户修改了业主信息表的数据时记录修改前与修改后的值
--创建后置触发器日志表
create table t_owners_log(
updatetime date,
ownerid number,
oldname varchar2(30),
newname varchar2(30)
);
--根据需求创建后置触发器
create or replace trigger tri_owners_log
after
update of name
on t_owners 
for each row
declare
begin 
  --向日志表插入记录
  insert into t_owners_log values(sysdate,:new.id,:old.name,:new.name);
end;

--测试
--修改t_owners表中的name
update t_owners set name='林玲玲1' where id=4;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/132480195
今日推荐