编写update触发器的不能对同一张表的特定某条数据进行实现,请问是oracle中有这个限制吗?还是我写的有问题呢?
create or replace trigger BF_ZJ_UPDATEZJM
  after update of invname on med_invbasdoc
 for each row
begin
 update med_invbasdoc  set invmnecode='aaaa'    where  :old.pk_medinvbasdoc=:new.pk_medinvbasdoc;
end;

解决方案 »

  1.   

    where :old.pk_medinvbasdoc=:new.pk_medinvbasdoc;
    先把你的逻辑理清了,你到底要做什么?sql的where 条件一边应该是列,一边是值,你这两边都是值。
      

  2.   

    create or replace trigger chc_medinvbasdoc
    before update or insert on med_invbasdoc
    for each row
    begin
      IF inserting THEN 
          :new.invmnecode := F_PINYIN(:new.invname) ;  
     ELSIF updating THEN   
      if(:old.pk_medinvbasdoc = :new.pk_medinvbasdoc) then
       :new.invmnecode := F_PINYIN(:new.invname);
        end if;
     end if;
    end;