【问题标题】:Oracle trigger - update column on newly inserted recordOracle 触发器 - 更新新插入记录的列
【发布时间】:2015-07-16 08:20:17
【问题描述】:

在我的 Oracle (Express) DB 中,我有一个包含一列的表,名为 created(日期类型)。
我想要做的是创建一个触发器,该触发器将在更新或插入完成后更新该列,使用SYSDATE

我的 sql(仅用于插入,我知道,无论如何它都会失败)是:

CREATE OR REPLACE TRIGGER  "VIRTUAL_COUNTERS_NEW" 
AFTER
insert on "VIRTUAL_COUNTERS"
begin
new.updated := SYSDATE
end;
/
ALTER TRIGGER  "VIRTUAL_COUNTERS_NEW" ENABLE
/

【问题讨论】:

    标签: sql oracle triggers oracle10g insert-update


    【解决方案1】:

    您需要在 new 前面加上冒号字符并为每一行添加 ,以便在多行插入的情况下更新每一行:

    CREATE OR REPLACE TRIGGER  VIRTUAL_COUNTERS_NEW
    BEFORE
    insert on VIRTUAL_COUNTERS
    FOR EACH ROW
    begin
      :new.updated := SYSDATE;
    end;
    /
    

    【讨论】:

    • 要即时更改值,触发器必须是 BEFORE 并且 yossi 想要包含 UPDATE 语句,所以它必须是 BEFORE INSERT OR UPDATE ON VIRTUAL_COUNTERS FOR EACH ROW
    • @acesargl 你是对的
    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 2013-06-11
    • 2013-07-01
    • 2018-09-15
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多