+ -
当前位置:首页 → 问答吧 → oralca触发器.

oralca触发器.

时间:2011-09-27

来源:互联网

有个表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;

作者: sunboy_yf   发布时间: 2011-09-27

SQL code

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> 


作者: opps_zhou   发布时间: 2011-09-27