我创建了一个数据类型为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;
答案 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;
这摆脱了额外的临时变量,这是不必要的。
祝你好运。