create or replace trigger update_table_sum
after insert on 表1
for each row
begin
  update 表2
     set LJS=LJS+1
   where XMMC='ZPTJ'||to_char(new.ZTPJ)
   commit;
end;
/

解决方案 »

  1.   

    create or replace trigger update_table_sum
    after insert on 表1
    for each row
    begin
      update 表2
         set LJS=LJS+1
       where XMMC='ZPTJ'||to_char(:new.ZTPJ)
       commit;
    end;
    /
      

  2.   

    TO: czrain 这样不行吧?怎么判断是ZTPJ1更新还是ZTPJ2更新哦
      

  3.   

    for each row是行级触发的,可以判断是ZTPJ1更新还是ZTPJ2更新
      

  4.   

    CREATE OR REPLACE TRIGGER TRI_INS_TABLE1
    BEFORE DELETE ON TABLE1
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    BEGIN
      IF NEW.ZTPJ=1 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZTPJ1;
      ELSIF NEW.ZTPJ=2 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZTPJ2;
      ELSIF NEW.ZTPJ=3 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZTPJ3;
      END IF;  --同理,其它相同
      IF NEW.ZXZC=1 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZXZC1;
      ELSIF NEW.ZXZC=2 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZXZC2;
      ELSIF NEW.ZXZC=3 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZXZC3;
      END IF;  IF NEW.SFXC=1 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=SFXC1;
      ELSIF NEW.SFXC=2 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=SFXC2;
      ELSIF NEW.SFXC=3 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=SFXC3;
      END IF;END;这只是一种简单的方法。当然如果项比较多的话,你也可以把它改写成动态SQL语句。
      

  5.   

    Sorry,上式有误CREATE OR REPLACE TRIGGER TRI_INS_TABLE1
    AFTER INSERT ON TABLE1
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    BEGIN
      IF :NEW.ZTPJ=1 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZTPJ1;
      ELSIF :NEW.ZTPJ=2 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZTPJ2;
      ELSIF :NEW.ZTPJ=3 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZTPJ3;
      END IF;  --同理,其它相同
      IF :NEW.ZXZC=1 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZXZC1;
      ELSIF :NEW.ZXZC=2 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZXZC2;
      ELSIF :NEW.ZXZC=3 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=ZXZC3;
      END IF;  IF :NEW.SFXC=1 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=SFXC1;
      ELSIF :NEW.SFXC=2 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=SFXC2;
      ELSIF :NEW.SFXC=3 THEN
        UPDATE TABLE2 SET LJS=LJS+1 WHERE XMMC=SFXC3;
      END IF;END;