pl/sql 编程(十一)

  • 行级DML触发器的创建
create or replace trigger tri_goods 

after insert or update or delete

on goods

for each row

begin

    if inserting then 

       insert into g_modify (oper_type,oper_time,goodsid,goodsname,remark,g_modify_id)

              values('添加的数据',sysdate,:new.goodsid,:new.goodsname,:new.remark,g_modify_id.nextval);

    elsif deleting then 

        insert into g_modify (oper_type,oper_time,goodsid,goodsname,remark,g_modify_id)

              values('删除的数据',sysdate,:old.goodsid,:old.goodsname,:old.remark,g_modify_id.nextval); 

    else

          insert into g_modify (oper_type,oper_time,goodsid,goodsname,remark,g_modify_id)

              values('修改的数据',sysdate,:old.goodsid,:old.goodsname,:new.remark,g_modify_id.nextval);

    end if;  

end;

 

使用when,case……when

create or replace trigger tri_goods2 

after insert or update or delete

on goods2

for each row

when (new.goodsid =100)

begin

    case 

    when  inserting then 

       insert into g_modify (oper_type,oper_time,goodsid,goodsname,remark,g_modify_id)

              values('添加的数据',sysdate,:new.goodsid,:new.goodsname,:new.remark,g_modify_id.nextval);

    when deleting then 

        insert into g_modify (oper_type,oper_time,goodsid,goodsname,remark,g_modify_id)

              values('删除的数据',sysdate,:old.goodsid,:old.goodsname,:old.remark,g_modify_id.nextval); 

    when updating then

          insert into g_modify (oper_type,oper_time,goodsid,goodsname,remark,g_modify_id)

              values('修改的数据',sysdate,:old.goodsid,:old.goodsname,:new.remark,g_modify_id.nextval);

    end case;  

end;

 

 

你可能感兴趣的:(pl/sql)