/*说明:
在宾馆插入一条新记录或是修改宾馆名称时,
把宾馆名称的拼音名称保存到另一表中.*/
create or replace trigger TRG_TEST_HOTEL_PINYIN
after  insert or update on TEST_HOTEL for each row
  
declare
  v_name_pinyin varchar2(200) default null;
 
begin     v_name_pinyin:=GET_PINYIN(:NEW.HOTEL_NAME); --取拼音名称.
   IF INSERTING THEN
    insert into HOTEL_PINYIN(hotel_no,N_HOTEL_PINYIN) 
    VALUES(:NEW.HOTEL_NO,v_name_pinyin);
  ELSIF UPDATING THEN
   UPDATE HOTEL_PINYIN  P SET P.N_HOTEL_PINYIN=v_name_pinyin
   WHERE P.HOTEL_NO=:old.HOTEL_NO;
  END IF;
  
exception
when others then
   htp.print('error='||SQLERRM);
end;

解决方案 »

  1.   

    trigger 编译通过了吗?
    INSERT and update table TEST_HOTEL's Row,this trigger not work?
      

  2.   

    编译通过.没有报错.但TEST_HOTEL 插入数据后,在HOTEL_PINYIN 表中,没有相应的插入数据.
    修改也没反映.
      

  3.   

    是否该trigger是disable的?用工具调试一下
      

  4.   

    [xuegongjian] 请详解.
    1.肯定非disable;
    2.怎样使用工具调试?什么工具???
      

  5.   

    plsqldev.exe 我一般用这个
    在trigger开头加个断点
    再在test界面 做 insert into TEST_HOTEL ....你的TEST_HOTEL表或GET_PINYIN 方法是否有过调整?