用oracle存储过程将三张表的数据查出插入另三张表

有三张表,表A,表B,表C,要将这三张表的数据分别查出来,放到表A1,表B1,表C1和表A2,表B2,表C2中。
表A,表B,表C的数据是实时更新的。每五分钟全部换一次。
表A1,表B1,表C1 和 表A,表B,表C同步。也就是表A1,表B1,表C1在插入数据的时候要清空数据。
表C1和表A2,表B2,表C2 存储 表A,表B,表C出现过的所有数据。也就是把表A,表B,表C 查出的数据直接插入C1和表A2,表B2,表C2 就可以 了。

这个存储过程怎么写?

第1个回答  推荐于2016-05-18
PROCEDURE P1 IS
BEGIN
DELETE FROM A1;
DELETE FROM B1;
DELETE FROM C1;
INSERT INTO A1 SELECT * FROM A;
INSERT INTO B1 SELECT * FROM B;
INSERT INTO C1 SELECT * FROM C;
INSERT INTO A2 SELECT * FROM A;
INSERT INTO B2 SELECT * FROM B;
INSERT INTO C2 SELECT * FROM C;
COMMIT;
END;

人后在job中5分钟调用一次。

或使用trigger,3个表类似的3个trigger:
create or replace trigger A_TRG
after insert or update or delete on A
for each row
begin
IF inserting THEN
insert into A1(KEY_COL,COL1,COL3)
VALUES(:NEW.KEY_COL,:NEW.col1,:NEW.col2,:NEW.col3);
insert into A2(KEY_COL,COL1,COL3)
VALUES(:NEW.KEY_COL,:NEW.col1,:NEW.col2,:NEW.col3);
elsif updating then
UPDATE A1 SET COL1=:NEW.col1,
A1.COL2=:NEW.col2,
A1.COL3=:NEW.col3)
WHERE KEY_COL=:NEW.KEY_COL,
elsif deleting then
DELETE FROM A1 WHERE KEY_COL=:NEW.KEY_COL;
END IF;
end A_TRG;追问

谢谢啦,刚才写错表了。

本回答被提问者采纳