有个表test 当test表里面插入数据并且name是“张三”的话,将名字变成“李四”
这个触发器该怎么写那。(我就想达到上面的目的)我试验了一下。create or replace trigger TRG_PHA_COM_APPLYOUT_INSERT
  before insert on pha_com_applyout  (before:这样写没有问题,但是插入的还是insert进去的值,触发器没有生效
                                        after:这样写的话,update语句就报错)
  for each row
declare
  v_feecode  VARCHAR2(3);
begin
   select t.fee_code
     into v_feecode
     from pha_com_baseinfo t
    where t.drug_code = :new.drug_code;     if (v_feecode = '003' and :new.billclass_code = 'P') then
      update pha_com_applyout m
         set m.billclass_code = '100908181927'
       where m.apply_number = :new.apply_number;
   end if;end TRG_PHA_STO_BILLLIST;

解决方案 »

  1.   


    create table test1 (sname       varchar2(30));create or replace trigger trg_test
      before insert on test1  
      for each row
    declare
      -- local variables here
    begin
        if inserting then
            if (:new.sname = '张三') then
                :new.sname := '李四';
            end if;
        end if;
    end trg_test;
    /
    insert into test1(sname) values('王五');
    insert into test1(sname) values('马六');
    insert into test1(sname) values('张三');
    commit;
    SQL> select * from test1;
     
    SNAME
    ------------------------------
    王五
    马六
    李四
     
    SQL>