如题:在before insert AAA 表的行级触发器中:  从BBB表查找是否有数据的number=:new.number  如果有就抛弃,没有就插入问题是怎么抛弃这个新插入的数据???,在线等

解决方案 »

  1.   

    用if判断
    if number<>:new.number then
      insert .....
    end if;
      

  2.   

    if number <>:new.number then 
      insert ..... 
    end if;
    正解。
      

  3.   

    我的意思是在 AAA 表建立的插入触发器,如果BBB表没有该条插入记录,就插入有该条记录,就抛弃,问题是如何抛弃这条记录呢??create or replace trigger trg_aaa
      before insert on aaa  
      for each row
    declare
      v_count   number(16);
    begin
      
      v_count  := 0;
      select count(1) into v_count from bbb where servnumber= :new.servnumber;
      
      if (v_count > 0) then  
          --就抛弃这条记录,如何抛弃?  
      end if;
      
      
    end trg_aaa;
      

  4.   

    不好 意思,理解错误,
    用异常处理
    create or replace trigger trg_aaa 
      before insert on aaa  
      for each row 
    declare 
      v_count  number(16); 
    begin 
      
      v_count  := 0; 
      select count(1) into v_count from bbb where servnumber= :new.servnumber; 
      
      if (v_count > 0) then  
          RAISE_APPLICATION_ERROR(-20001, '不满足条件,操作取消!');
      end if; 
       
    end trg_aaa;
      

  5.   

    不抛的话不好处理。除非insert时用merge into 取代。
      

  6.   

    用merge into好像不行
    还是用抛出异常的办法吧
      

  7.   

    AAA表的触发器使用频率很高,抛异常很影响性能啊,能不能不采用撒