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

深藏阁楼爱情的钟 2023-10-15 09:53 176阅读 0赞

什么是触发器

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

触发器语法

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

  1. CREATE [or REPLACE] TRIGGER 触发器名
  2. BEFORE | AFTER
  3. [DELETE ][[or] INSERT] [[or]UPDATE [OF 列名]]
  4. ON 表名
  5. [FOR EACH ROW ][WHEN(条件) ]
  6. declare
  7. ……
  8. begin
  9. PLSQL
  10. End

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

前置触发器

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

  1. --需求:当用户输入本月累计表数后,自动计算出本月使用数
  2. create or replace trigger tri_account_num1
  3. before
  4. update of num1
  5. on t_account
  6. for each row
  7. declare
  8. begin
  9. --通过伪记录变量修改usenum字段的值num1(水表现在的数值),num0(上个月使用的水表数)
  10. :new.usenum := :new.num1-:new.num0;
  11. end;

后置触发器

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

  1. --需求:当用户修改了业主信息表的数据时记录修改前与修改后的值
  2. --创建后置触发器日志表
  3. create table t_owners_log(
  4. updatetime date,
  5. ownerid number,
  6. oldname varchar2(30),
  7. newname varchar2(30)
  8. );
  9. --根据需求创建后置触发器
  10. create or replace trigger tri_owners_log
  11. after
  12. update of name
  13. on t_owners
  14. for each row
  15. declare
  16. begin
  17. --向日志表插入记录
  18. insert into t_owners_log values(sysdate,:new.id,:old.name,:new.name);
  19. end;
  20. --测试
  21. --修改t_owners表中的name
  22. update t_owners set name='林玲玲1' where id=4;

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,176人围观)

还没有评论,来说两句吧...

相关阅读