关键字 trigger
语句级触发器 : 不需要表中参数
create or replace trigger t1
after 代表操作前触发
insert 代表什么操作触发
on userss 作用userss表
declare
begin
dbms_output.put_line('新员工入职'); 触发就输出一句话
end;
insert into userss values(1,'wyc'); 触发
行级触 发器: 需要表中参数,进行增删改 加上 for each row 就可以使用了 :old 数据改变前 :new 数据改变后 了
需求不能给员工降薪 raise_application_error( -2001 ~ -20999,'错误信息')
create or replace trigger t2
before 不能降薪了才触发,所以时before
update update操作
on emp emp表
for each row 行级
declare
begin
if :old.sal > :new.sal then 如果老的工资>了新的工资就说明降了
raise_application_error(-20001,'不能给员工降薪!'); 抛出异常
end if;
end;
update emp set sal=sal-1 where empno = 7369; 触发报错
触发器实现主键自增
create or replace trigger t3
before 在插入前设置新的id
insert
on person
for each row
declare
begin
select s_userss.nextval into :new.pid from dual;
end;
insert into person(pname) values('wyc'); 触发 不用写 pid了
insert into person values(1,'wyc'); 这个样时还是会触发,不会插入1这个pid