在 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;

解决方案 »

  1.   

    null就行了
    其实可以用merge来做,一条语句就够了
      

  2.   

     if (v_count > 0) then  
          --就抛弃这条记录,如何抛弃?  
      end if; 
    改成:
     if (v_count = 0) then  
        insert into bbb....   --改成没有就插入  
      end if; 
      

  3.   


    楼上貌似理解错了, 楼主想拦截对aaa表的插入语句。
      

  4.   


    raise_application_error(-20001,'ddd');
      

  5.   

    请教:merge 应该怎么写呢,我没想明白:(
      

  6.   

    merge 好似不行,有没有谁有创意的想法
      

  7.   

    merge into bbb b
    using (
    select :new.servnumber sernumber from dual
    ) a
    on a.servernumber=b.servernumber
             WHEN NOT MATCHED THEN
             INSERT
             VALUES (a.sernumber);
      

  8.   

    楼上的大侠,我是要更新对AAA表的数据过滤,而BBB表保持不变,似乎提供的SQL不符并且BBB表200W数据,AAA表的触发器使用频率很高,每秒200条数据触发进来