【问题标题】:Two Trigger of same type on same table which will get executed first?同一张表上的两个相同类型的触发器将首先执行?
【发布时间】:2012-01-10 13:53:40
【问题描述】:

我有一个非常基本的疑问。 假设我们在表 1 上插入触发器 TR1 和 TR2 后有两个。 一个触发器更新相同的表 1,第二个触发器调用过程.. 我需要 TR1 在 TR2 之前执行。 这怎么能实现.. 谢谢

【问题讨论】:

  • 问题是,为什么有人会在一张桌子上有两个相同类型的触发器?显然很多人都这样做了,因为 Oracle 已经引入了 Tony 讨论的功能,但这只是 - 嗯 - 很奇怪。
  • @APC:也许您可能想要两个相同类型的触发器,但它们的条件不同?显然,这仍然可以在一个触发器中使用 IF 语句来完成,但我认为使用条件语句可能会带来性能优势。
  • @JeffreyKemp - 这听起来很合理。除了最简单的逻辑,我避免使用触发器,这很少导致需要条件。但我知道其他人喜欢触发器。

标签: oracle triggers


【解决方案1】:

在 Oracle 11G 中,您可以使用 PRECEDES 或 FOLLOWS 子句,例如

create trigger TR2
after insert on table1
for each row
follows TR1 -------------------------------------------------<<
begin
 ...
end;

在 11G 之前,如果射击是不确定的,则命令;确保正确执行的唯一方法是将 2 个触发器合并为 1 个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 2011-12-11
    相关资源
    最近更新 更多