【问题标题】:How to check if a columns value was explicitly specified in a PL/SQL BEFORE UPDATE trigger?如何检查是否在 PL/SQL BEFORE UPDATE 触发器中明确指定了列值?
【发布时间】:2013-03-25 06:01:06
【问题描述】:

有没有办法判断在 PL/SQL BEFORE UPDATE 触发器中显式更新了哪些列?

例如:我只想在UPDATE 语句未明确指定此列的值时设置:new.last_modified_by := USER

【问题讨论】:

    标签: oracle plsql triggers


    【解决方案1】:

    使用UPDATING函数:

    if updating('LAST_MODIFIED_BY') then 
    ...
    end if;
    

    更多细节在手册中:http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#BCFIDDBB

    【讨论】:

    • @FrankSchmitt:我也想过IS NULL。这对于update foo set last_modified_by = null 也是“正确的”。取决于 OP 是否应被视为“明确说明一个值”
    • 哦 - 我喜欢这个。谢谢。
    • 完美运行。再次感谢。
    猜你喜欢
    • 2012-03-09
    • 2023-03-03
    • 2021-11-03
    • 1970-01-01
    • 2021-11-25
    • 2012-04-08
    • 2013-01-24
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多