【问题标题】:Firing a trigger on update of all columns expect 3 specified ORACLE在更新所有列时触发触发器需要 3 个指定的 ORACLE
【发布时间】:2017-10-09 04:33:24
【问题描述】:

我有一个包含列的表,可以说:col1、col2、col3 ... col20。 我想在该表上创建一个触发器,该触发器将在更新该表的任何列时触发,除了 col1、col2 和 col3,而不必列出所有其他列。因此,如果出现以下情况,则不会触发该触发器:仅更新 col1、col2 和 col3 或仅更新其中一个或仅更新其中两个。就像我会像这样开始触发

CREATE TRIGGER MY_TRIGGER
AFTER UPDATE OF col4, col5, col6 ... col20
ON MY_TABLE

但问题是我的表有 269 列,我不想列出它们,即使我尝试得到错误“ORA-04086:触发器描述太长,将 cmets 移动到触发代码中”。有什么解决办法吗?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    阅读有关在表中包含超过 256 列的信息;甲骨文不推荐它。相信我,你在碎片化方面处于噩梦般的境地。还有其他方法可以解决这种糟糕的设计(例如,视图将 2 个多列 [

    【讨论】:

    • 感谢您的回复:)。那个数据库不是我的,我不能弄乱表结构。
    • @Anici forewarned 是这里的关键字。确保应用程序所有者了解这种糟糕的设计及其影响。它不会扩展,如果还没有发生,麻烦就在拐角处。
    猜你喜欢
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2019-09-08
    • 2016-06-24
    • 2012-11-17
    • 2016-12-03
    相关资源
    最近更新 更多