可以在预言机中多次插入时仅触发一次吗?



我正在尝试发送邮件以插入表格。我在五月有多个插入 .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 将每个分支作为单独的语句执行。所以这个...

INSERT ALL
INTO mytable (column1, column2, column3) VALUES ('John', 123, 'Lloyds Office')
INTO mytable (column1, column2, column3) VALUES ('Jane', 124, 'Lloyds Office')
INTO mytable (column1, column2, column3) VALUES ('Billy', 125, 'London Office')
SELECT * FROM dual;

。实际上是三个 INSERT 语句,因此语句级触发器触发三次。

如果要在单个语句中插入多行,则需要使用 插入到 ...SELECT 语法,如下所示:

INSERT INTO mytable (column1, column2, column3)
select 'John', 123, 'Lloyds Office' from dual
union all 
select 'Jane', 124, 'Lloyds Office' from dual
union all 
select 'Billy', 125, 'London Office' from dual
;

此示例使用 Oracle 虚拟表 DUAL 生成一行,并使用 UNION ALL 运算符将多个 SELECT 语句联接到单个结果集中。

最新更新