我正在使用Oracle 10g Express或Oracle XE。在EMPLOYEES表中,我想添加另一个列调用last_modified,如果它已被修改,它将自动生成当前日期或日期/时间。我知道有这个rowscn(时间戳)的东西只能从oracle 10g开始提供,但我想手动创建一个,因为我的客户端使用的是oracle 9i,但我只有10g才能进行测试。我也从来没有使用过oracle。这适用于Lotus Notes的某些集成项目。因此,如果可能,我希望LotusScript可以识别日期或日期/时间。
答案 0 :(得分: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;
/
答案 1 :(得分:1)
通常的方法是
示例:
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;