create or replace trigger TEST_TRG
  BEFORE insert on a  
  for each row
DECLARE
   STR VARCHAR2(10);
begin
   IF :NEW.X=1 THEN 
      UPDATE A SET count_x=count_x+1 WHERE ROWNUM=1;
   END IF;
   IF :NEW.X=0 THEN
      UPDATE A SET count_y=count_y+1 WHERE ROWNUM=1;
   END IF ;
end TEST_TRG;

解决方案 »

  1.   

    create or replace trigger trg_b_a
      BEFORE insert on table_b  
      for each row
    DECLARE
       STR VARCHAR2(10);
    begin
       IF :NEW.X=1 THEN 
          update table_a set count_x=count_x+1 WHERE ROWNUM=1;
       END IF;
       IF :NEW.X=0 THEN
          update table_a set count_y=count_y+1 WHERE ROWNUM=1;
       END IF ;
    end trg_b_a;
      

  2.   

    create or replace trigger trg_b_a
      before insert on table_b  
      for each row
    begin
       IF :NEW.X='1' THEN 
          update table_a set count_x=count_x+1 WHERE id=:new.id and ROWNUM<=1;
       END IF;
       IF :NEW.X='0' THEN
          update table_a set count_y=count_y+1 WHERE id=:new.id and ROWNUM<=1;
       END IF ;
    end trg_b_a;
      

  3.   

    create or replace trigger trg_b_a
      BEFORE insert on table_b  
      for each row
    DECLARE
       STR VARCHAR2(10);
    begin
       IF :NEW.X=1 THEN 
          update table_a set count_x=count_x+1 WHERE ROWNUM=1;
       END IF;
       IF :NEW.X=0 THEN
          update table_a set count_y=count_y+1 WHERE ROWNUM=1;
       END IF ;
    end trg_b_a;