【发布时间】:2018-09-26 17:55:27
【问题描述】:
我正在尝试发送邮件以插入表中。我在 .pdc 中有多个插入。
我们可以这样做吗?
我尝试一次插入多条记录。
INSERT ALL
INTO mytable (column1, column2, column_n) VALUES ('John', 123, 'Lloyds Office')
INTO mytable (column1, column2, column_n) VALUES ('Jane', 124, 'Lloyds Office')
INTO mytable (column1, column2, column_n) VALUES ('Billy', 125, 'London Office')
SELECT * FROM dual;
但它仍然触发了 3 次。
我写的触发器是这个。
CREATE OR REPLACE TRIGGER myschema."my_trigger"
AFTER INSERT OR UPDATE OR DELETE ON myschema.mytable
begin
----- email notification here
END;
谢谢。
我写了.pdc,当我执行它时,我在其中为表编写了多个插入。当 DML 发生多次时,它会触发多次。
我已经阅读了很多块我没有找到任何这样的答案。
我们可以让它只开火一次吗?
编辑
为了更新
update mytable set column2 = 123 where column1= 'first';
update mytable set column2 = 124 where column1= 'second';
update mytable set column2 = 125 where column1= 'first';
commit;
我们如何为更新做同样的事情? 谢谢
【问题讨论】:
-
已添加
insert all -
您不能在插入结束时 - 将另一个值插入到具有所需触发器的虚拟表中吗?
-
@Plirkee - 插入虚拟表将如何触发目标表上的触发器?
-
@APC 我的意思是,如果它是 OP 正在运行的脚本,那么触发器可能会进入虚拟表而不是目标表。并且虚拟表每次运行只能更新一次 - 因此触发器也执行一次。
-
@Plirkee - 如果不将触发器构建在虚拟表而不是它们相关的实际表上,触发器还不够糟糕吗?无论如何,正确的解决方案是修复 INSERT 语句而不是基础结构。