Oracle 触发器 for each row

for each row 场景中两个关键字 :old ,:new

:old.字段名  获取修改前的值

:new.字段名  获取修改后的值

场景1:更改员工的薪资时,不能小于原薪资。

create or replace trigger trig
after update on emp20
for each row
begin
  if(:old.sal > :new.sal) then 
    raise_application_error(-20000,'新薪资不能少于原薪资');
  end if;
end;

 

场景2:更改部门表的时候,级联修改员工表的部门。

create or replace trigger trig
after update on dept for each row
begin
  update emp20 set deptno=:NEW.deptno where deptno=:OLD.deptno;
end;

注意:触发器中不能存在commit或者是rollback;否则报错
Oracle 触发器 for each row_第1张图片

--查看用户下的触发器
select * from user_triggers;

--通过触发器名称,查找其源码
select * from all_source where type = 'TRIGGER' and name = 'TRIG1';

你可能感兴趣的:(Sql)