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