gpt4 book ai didi

sql - 关于触发顺序

转载 作者:行者123 更新时间:2023-12-01 08:37:06 26 4
gpt4 key购买 nike

在一张 table 上有两个触发器。当表中的每一行都有插入或更新时,将执行一个触发器。当表中的每一行都有更新时,将执行第二个触发器。在 ORACLE 10G 中,当表中的一行有更新语句时,哪个触发器首先执行。 oracle中的触发器有执行顺序吗?如果可以,我该如何设置?

最佳答案

触发器的触发顺序是任意的,不是您在 10g 中可以控制的。我相信,从技术上讲,它是按照碰巧创建触发器的顺序进行的,但这当然不是您想要指望的。

在 11g 中,您可以控制触发器的触发顺序。但是,最好用一个调用两个存储过程的触发器替换这两个触发器。所以而不是

CREATE TRIGGER trg_1
BEFORE UPDATE ON t
FOR EACH ROW
BEGIN
<<do thing 1>>
END;


CREATE TRIGGER trg_2
BEFORE UPDATE ON t
FOR EACH ROW
BEGIN
<<do thing 2>>
END;

你会得到更好的服务

CREATE PROCEDURE p1( <<arguments>> )
AS
BEGIN
<<do thing 1>>
END;

CREATE PROCEDURE p2( <<arguments>> )
AS
BEGIN
<<do thing 2>>
END;

CREATE TRIGGER trg
BEFORE UPDATE ON t
FOR EACH ROW
BEGIN
p1( <<list of arguments>> );
p2( <<list of arguments>> );
END;

关于sql - 关于触发顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com