Oracle 表上的多个小触发器与单个大触发器

Oracle 表上的多个小触发器与单个大触发器,oracle,triggers,Oracle,Triggers,可能重复: 问题: 哪一个(性能)最好?具有多个触发器(大约7-10个),每个情况/目的一个,或一个触发器处理所有情况(通过使用if等) 详细信息: 我们正在开发基于Oracle数据库的企业应用程序。我们有一个大约3百万行的表,这是我们应用程序的基本表。有几种情况我们只需要用触发器来处理。IMHO,为了维护,最好有多个触发器。但是性能呢 在我的例子中,一个触发器比多个小触发器快得多。为什么我不知道。我看不出多个触发器的执行速度有多快。唯一的折衷办法是它们不会执行条件逻辑,从而节省了很小的几分之

可能重复:

问题: 哪一个(性能)最好?具有多个触发器(大约7-10个),每个情况/目的一个,或一个触发器处理所有情况(通过使用if等)

详细信息:
我们正在开发基于Oracle数据库的企业应用程序。我们有一个大约3百万行的表,这是我们应用程序的基本表。有几种情况我们只需要用触发器来处理。IMHO,为了维护,最好有多个触发器。但是性能呢

在我的例子中,一个触发器比多个小触发器快得多。为什么我不知道。

我看不出多个触发器的执行速度有多快。唯一的折衷办法是它们不会执行条件逻辑,从而节省了很小的几分之一秒

这确实是一个设计/维护问题。。。比方说,您希望插入代码以提供计时信息:如果您有一个触发器,那么您只需要进入一个程序,而对于多个触发器,您需要到多个地方插入代码


也可以考虑使用case语句,而不是(如果它更干净/更容易读/维护)。< /P>你是否意识到如果在一个表上有多个相同类型的触发器,那么Oracle数据库会选择一个任意的顺序来执行这些触发器。每个后续触发器都会看到以前触发的触发器所做的更改。每个触发器都可以看到新旧值。但如上所述,执行命令是任意的。为了确保多个触发动作以特定的顺序发生,您必须将这些动作合并到一个触发器中。是的,我意识到(也知道)这一点。这种情况类似于,一个触发器插入到

表1
,第二个触发器更新
表2
,第三个触发器插入到
表3
(当然还有它们的小逻辑)。所有触发器都没有任何顺序(或关系)。我们可以将它们放在一个大触发器中,也可以将它们分离为多个触发器。
也许有人会告诉我们不应该使用触发器。但这是一种特殊情况,这个问题是关于理解数据库(幕后过程)的。这可能是相互测试:是的,这很有用。谢谢。如果你认真考虑7-10触发器,明智的做法是把所有东西都放在一个包裹里吗?