您的位置:首页 > 数据库 > Oracle

Oracle基本操作十四:触发器-重点是DML行级触发器

2017-05-15 23:24 288 查看
--触发器:以独立的对象存在,不能主动调用,由事件隐式触发

--触发器类型:

   1.DML触发器:如insert,delete,update语句对行级或语句级进行触发, 一般是使用行级

   2.替代触发器:专门进行视图操作,解决的问题:不能直接对由两个以上的表建立的视图进行操作

   3.系统触发器:如DDL或oracle系统的启动与关闭等系统事件。

--DML触发器语法举例:当删除tb_clazz中的数据时,向备份表tb_clazz_back中插入一条数据

create or replace trigger t_back_clazz

after delete on tb_clazz  --触发时序:before,after

referencing myNEX as NEW myOLD as OLD --相关标识符:访问操作完成前/后的值

for each row  --行触发器

declare

  r_tb_class tb_clazz%rowtype;

begin

  --1.获取删除后的数据

  r_tb_class.id :=OLD.id,--获取删除后的数据id

  r_tb_class.code :=OLD.Code;--获取删除后的数据code

  

  insert into tb_clazz_back(id,code)

  values(r_tb_class.id,r_tb_class.code);

  

  --commit 触发器中不需在commit,是跟着触发条件进行的

end t_back_clazz;

--系统触发器举例--登录之后触发,触发类型是固定的,如LOGON

create or replace trigger  t_login

after LOGON on DATABASE;

declare

  tablename varchar(20);

begin

  tablename:=DICTIONARY_OBJ_NAME:

  insert into test(name,createtime)

  value(tablename,sysdate);

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: