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

--触发器:以独立的对象存在,不能主动调用,由事件隐式触发
--触发器类型:
   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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值