2012-07-24 16 views
1

我正在使用Oracle 10g Express或Oracle XE。在EMPLOYEES表中,我想添加另一個列調用last_modified,如果它已被修改,它會自動生成當前日期或日期/時間。我知道有這個rowcn(timestamp)的東西,它只能從oracle 10g開始使用,但我想手動創建一個,因爲我的客戶端使用的是oracle 9i,但我只有10g做測試。此外,我從來沒有使用Oracle。這適用於Lotus Notes的一些集成項目。因此,如果可能的話,我希望日期或日期/時間由LotusScript識別。如何在oracle 9i中創建last_modified字段?

回答

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

通常的辦法是

  • 添加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; 
+1

無需大火,觸發刪除或插入,如果你只是做了更新工作時。 – 2012-07-24 09:04:56

+1

的確如此 - 它只是我們使用的審計觸發器模板的摘錄(在更新/刪除時插入審計記錄的位置)。 – 2012-07-24 09:07:08

+0

它可能會混淆對觸發器完全陌生的人。 – 2012-07-24 09:08:44