我试图创建一个将值插入临时表的触发器,但我也希望它从我想要修改的实际表中删除这些值,以便更好地解释自己:
我创建了这个表
create table R2(a int, b date);
临时表与R2
基本相同CREATE GLOBAL TEMPORARY TABLE R2TEMP
AS SELECT * FROM R2;
如果我这样做:
INSERT INTO R2 VALUES (1,'09/05/1995');
我希望此触发器在R2TEMP中插入这些值,而不是将它们插入R2中(我使用了DELETE FROM R2但我想知道如何避免它)
CREATE OR REPLACE TRIGGER BLOCK_INSERT2
BEFORE INSERT ON R2
FOR EACH ROW
BEGIN
INSERT INTO R2TEMP(A,B)
SELECT * FROM R2;
DELETE FROM R2;
END;
我想知道如何将这些值插入到另一个表中,与引发触发器的表不同,我希望自己解释一下,谢谢你的时间
答案 0 :(得分:1)
我认为您正在寻找instead of
触发器(文档here)。
很容易编码:
CREATE OR REPLACE TRIGGER BLOCK_INSERT2
INSTEAD OF INSERT ON R2
FOR EACH ROW
BEGIN
INSERT INTO R2TEMP(A,B)
SELECT A, B FROM R2;
END;
我建议您明确列出所有列,而不是使用select *
。