在表A建一个before或after insert的触发器,
for each row
先从B表取得最大的编号(如果B表数据量很大,给B表建一个相应的序列应该会更好,此处就从序列中取得下一个编号),然后插入B表一条记录。
然后判断C表中有没有(可以用select bianhao into xxx 的语句,加一个无数据的异常判断)名称和单价相同的物品,有就update,没有就在异常处理里面insert。不难啊, 自己写吧。

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER test_a
        BEFORE INSERT OR UPDATE ON a
        FOR EACH ROW
    DECLARE 
        a_1 NUMBER;
    BEGIN
        INSERT INTO B(BIANHAO,MINGCHENG,SHULIANG,GUIGE,DANJIA,SHIJIAN)
            VALUES(CONCAT('00000',:NEW.RUKUMINGXIHAO),
            :NEW.MINGCHENG,:NEW.SHULIANG,:NEW.GUIGE,:NEW.DANJIA,:NEW.SHIJIAN);
        SELECT COUNT(*) INTO a_1 FROM C
          WHERE C.MINGCHENG=:NEW.MINGCHENG
          AND C.GUIGE=:NEW.GUIGE
          AND C.DANJIA=:NEW.DANJIA;      
        IF a_1=0 THEN      
          INSERT INTO C(BIANHAO,MINGCHENG,SHULIANG,GUIGE,DANJIA)
            VALUES(:NEW.RUKUMINGXIHAO,:NEW.MINGCHENG,:NEW.SHULIANG,:NEW.GUIGE,
            :NEW.DANJIA);       
        ELSE
          UPDATE C
            SET C.BIANHAO=:NEW.RUKUMINGXIHAO,
                C.SHULIANG=C.SHULIANG+:NEW.SHULIANG;
        END IF;
    END test_a;
    你根据自己的需求再改一下吧!!!
    Good luck!!!