触发器和错误提示信息设置

一.概念

触发器:就是制定一个规则,在我们做增删改操作的时候,只要满足条件,自动触发,无需调用。

二.分类

语句级触发器:不包含for each row的就是语句级触发器。

行级触发器:包含for each row的就是行级触发器。

三.增删改的触发器说明

触发语句:old【之前数据】:new【新数据】
Insert所有字段都为null(空)将要插入的数据
Update更新之前该行的值更新之后该行的值
Delete删除之前该行的值所有字段都为null(空)

四.语法

1.语句级触发器

create or replace trigger t1--设置触发器名称
after--设置触发时机:before或者after
insert--设置增删改的状态【事件源】
on person--设置表名【事件源】
declare--声明
begin
  dbms_output.put_line('新员工入职');--设置事件

end;

2.行级触发器

--行级触发器
--案例:不能给员工降薪
create or replace trigger t2--设置触发器名称
before--设置触发时机:before或after
update--设置增删改的状态【事件源】
on emp--设置表名【事件源】
for each row--设置行级触发器
declare--声明

begin
  if :old.sal>:new.sal then
    --raise_application_error(-20001~-20999之间,'填写错误提示信息')
     raise_application_error(-20001,'不能给员工降薪');--设置事件
  end if;

end;

3.oracle错误信息设置

 --raise_application_error(-20001~-20999之间,'填写错误提示信息')

raise_application_error(-20001,‘不能给员工降薪’)

4.触发器语法解析
图片

3.rar

五.范例

1.语句级触发器

图片

2.行级触发器

图片

六.触发器设置主键自增长

1.语法

--案例:使用触发器进行主键自增长【行级触发器】
--案例准备:创建一个序列,序列作用就是获取指定表的主键的表
create sequence s_person;--序列表名
--分析:在用户做插入操作的之前,拿到插入的数据,给该数据中的主键列赋值。
create or replace trigger auid--设置触发器名称
before--设置触发时机:before或afte
insert--设置增删改的状态【事件源】
on person--设置表名【事件源】
for each row--设置行级触发器
declare

begin
  select 序列表名.nextval into :new.主键名称 from dual;

end;

2.细节
如果存入的主键,表中已存在,则自动增长跟序列的下一个数字(nextval)进行存储。

3.范例

图片

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值