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

一.概念

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

二.分类

语句级触发器:不包含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.范例

图片

发布了67 篇原创文章 · 获赞 21 · 访问量 6891

猜你喜欢

转载自blog.csdn.net/qq_45421186/article/details/105480572