如何在TIMESTAMP列中继续更新系统当前时间

时间:2015-09-15 23:51:16

标签: oracle timestamp

我创建了一个数据类型为timestamp的列。我想更新特定列。我试过但它没有更新。

 Create table mytime
 (name varchar(20),schdul timestamp(6)); 

CREATE OR REPLACE TRIGGER mytable_entry_stamp 
        BEFORE UPDATE OF schdul ON mytime
        FOR EACH ROW 
       DECLARE 
          t1 timestamp:= current_timestamp ;
BEGIN 

      :new.schdul:= case :new.schdul
                        when 'shree' then t1
                        else :new.schdul
                    end; 
END; 

1 个答案:

答案 0 :(得分:0)

在你的触发器代码中,它看起来像你的意思

:new.schdul:= case :new.name  -- <<=== changed to name
                when 'shree' then t1
                else :new.schdul
              end; 

整个触发器可以简化为

CREATE OR REPLACE TRIGGER mytable_entry_stamp 
  BEFORE UPDATE OF schdul ON mytime
  FOR EACH ROW 
BEGIN
  :new.schdul:= case :new.name
                  when 'shree' then CURRENT_TIMESTAMP
                  else :new.schdul
                end; 
END MYTABLE_ENTRY_STAMP;

这摆脱了额外的临时变量,这是不必要的。

祝你好运。