自动更新带有时间戳的oracle表列

时间:2016-06-25 11:38:56

标签: sql oracle oracle11g

我有一个要求,我需要在每个插入和更新列上使用时间戳更新表列名'updated_date',这样如果有插入记录,则在update_date中创建一个插入时间戳的行,如果记录是然后我需要更新update_date列中的当前时间戳。我想使用DDL处理oracle级别而不是修改所有查询。在oracle中是否有相同的选项。

1 个答案:

答案 0 :(得分:0)

我认为你至少应该看看TRIGGERS,因为你的案例有一个非常简单的解决方案(如果我理解你的要求):

create or replace trigger trigger1 
before insert or update on t1 
for each row 
begin
  :new.updated_date := systimestamp;
end;
/

此触发器将在插入和更新时触发,并且您将在两种情况下获得当前时间戳值 - 如果您插入记录或更新它并不重要。

如果您有另一个BEFORE触发器用于插入或更新,您可以将以下代码添加到:

if inserting or updating then
  :new.updated_date := systimestamp;
end if;

请阅读您的Oracle RDBMS版本的文档,了解更多触发器用例。

P.S。和DDL用于数据定义更改(例如alter table),而不是DML的插入/更新/删除。