1

我正在使用 Oracle 10g Express 或 Oracle XE。在 EMPLOYEES 表中,我想添加另一个列调用 last_modified,如果它已被修改,它会自动生成当前日期或日期/时间。我知道只有从 oracle 10g 起才有的 rowscn(timestamp) 东西,但我想手动创建一个,因为我的客户使用的是 oracle 9i,但我只有 10g 来进行测试。而且我以前从未使用过oracle。这是针对与 Lotus Notes 的一些集成项目。因此,如果可能的话,我希望 LotusScript 可以识别日期或日期/时间。

4

2 回答 2

1

向表中添加一个类型TIMESTAMP的列(在不支持的 9i 版本中可能不可用,但随后只需使用DATE)。

alter table employees add (modified_at timestamp);

然后创建一个在更新时触发的触发器,它只是将该列设置为 sysdate:

create or replace trigger update_modified
  before update on employees
  for each row
begin
  :new.modified_at := sysdate;
end;
/    
于 2012-07-24T09:03:33.403 回答
1

通常的方法是

  • 将 modify_date / modified_by 列添加到您的表中
  • 创建一个触发器,在修改行时更新此列

例子:

  CREATE OR REPLACE TRIGGER TR_AUD_EMPLOYEE
  BEFORE INSERT OR UPDATE OR DELETE ON EMPLOYEE
  FOR EACH ROW
begin

  if UPDATING then

    :new.MODIFIED_BY := user;
    :new.MODIFY_DATE := sysdate;
  end if;
end;
于 2012-07-24T09:03:38.163 回答