Oracle触发器概念和模板

🥪触发器的基本概念

当定义的 '触发条件' 成立时,其语句就会 '自动执行'  ,触发条件可以是对表数据的新增修改或者删除等。触发器的作用保护数据的安全,监视对数据的各种操作,如  '日志记录': 对重要表的 '修改' 进行记录。

🌮触发器和存储过程的区别?

主要区别:'调用运行方式不同'

存储过程: '用户'、'应用程序'、'触发器' 来调用
触发器:   '自动执行'(满足 '触发条件'),与其它无关

🌯创建触发器

格式:

create [or replace] trigger 触发器名
   触发时间 {before | after}           -- view 中是 instead of
   触发事件 {insert | update | delete} -- dml、ddl、database
on 触发对象                            -- table、view、schema、database 
   触发频率 {for each row}            -- 行级触发器。默认:语句级触发器
   [follows 其它触发器名]              -- 多个触发器执行的 前后顺序
   [when 触发条件]
begin
   pl/sql 语句;
end;

💡说明:

触发器名:一般格式 tr_*
触发时间:在 '触发事件' 发生之前(before)还是之后(after)
触发事件:根据不同的 '触发事件',可以分为不同的 '类型'
触发对象:table、view、schema、database
触发频率:'语句级触发器'(默认)指触发一次,'行级触发器' 每一行触发一次
触发条件:仅当 '触发条件' 为 True 时,才执行 pl/sql 语句

🥙使用案例

create or replace trigger tr_user_info
  after update of sno, name on user_info
  for each row
begin
  if :new.id <> :old.id or :new.username <> :old.usernamethen
    raise_application_error(-20001,
                            '禁止修改系统用户! id = ' || :new.id || ', username = ' ||
                            :new.username);
  end if;
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

共饮一杯无

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值