【问题标题】:How many triggers we can have on a single table in Oracle DB我们可以在 Oracle DB 中的单个表上拥有多少个触发器
【发布时间】:2016-04-15 05:49:21
【问题描述】:

我对我们可以在 oracle db 中的单个表上拥有的不同类型触发器的最大数量感到困惑。

【问题讨论】:

  • 没有限制。一个表上的同一个事件可以有尽可能多的触发器。但是,如果您热衷于开发这样一个系统,您可以在单个表上达到实际触发器数量的限制,那么毫无疑问,这将是一个完全愚蠢的系统。
  • 但是网上有人说我们可以有 12 个不一样的触发器。
  • 这是完全错误的。 oracle 不会阻止您为同一事件创建多个触发器。试试看。此外,从 11g 起,支持复合触发器。所以,12 是完全错误的。你可以有很多。
  • 感谢您的评论,正如您所建议的,让我在本地数据库中尝试一下。
  • 没有限制。您可以根据需要创建任意数量。但在 Oracle 9.0 或以下版本中,最大触发器数为 12。

标签: oracle triggers database-administration


【解决方案1】:

您是否因为任何限制而遇到任何问题?

你可以有这些时间点的触发器:

  • BEFORE 语句触发器
  • 行触发器之前
  • AFTER 行触发器
  • AFTER 语句触发器

如果您在一个时间点有多个触发器,则执行顺序不确定,因此同一时间点有多个触发器应该是非常罕见的。

甲骨文documentation 说:

您无法控制触发多行触发器的顺序。

如果两个或多个触发器定义为相同的时间点,并且它们触发的顺序很重要,那么您可以使用FOLLOWS 子句控制触发顺序。

【讨论】:

    【解决方案2】:

    您可以在同一时间点拥有多个触发器。 您可以在创建触发器时使用 FOLLOWS 关键字来实现。

    【讨论】:

    • 我同意你的观点。 Oracle 11g 触发器语法现在包含 FOLLOWS 子句,以保证使用相同时间点定义的触发器的执行顺序。
    猜你喜欢
    • 2014-09-16
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    相关资源
    最近更新 更多