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