2012-07-24 2 views
1

Oracle 10g Express 또는 Oracle XE를 사용하고 있습니다. EMPLOYEES 테이블에서 수정 된 경우 자동으로 현재 날짜 또는 날짜/시간을 생성하는 last_modified라는 또 다른 열 호출을 추가하려고합니다. 나는 오라클 10g에서만 사용할 수있는이 rowscn (timestamp)이 있다는 것을 알고 있지만 클라이언트가 오라클 9i를 사용하고 있기 때문에 수동으로 만들고 싶습니다. 그러나 테스트를 수행하는 데 10g 밖에 없습니다. 또한 전에 oracle을 사용한 적이 없습니다. 이것은 Lotus Notes와의 일부 통합 프로젝트를위한 것입니다. 따라서 가능한 경우 LotusScript에서 인식 할 수있는 날짜 또는 날짜/시간을 원합니다.oracle 9i에서 last_modified 필드를 작성하는 방법은 무엇입니까?

답변

1

테이블에 TIMESTAMP 유형의 열을 추가하십시오 (지원되지 않는 9i 버전에서는 사용할 수 없지만 대신 DATE 만 사용하십시오).

alter table employees add (modified_at timestamp); 

그리고 단순히 SYSDATE 해당 열을 설정 갱신에 발사되는 트리거 작성 :에 modify_date/modified_by 열을 추가

create or replace trigger update_modified 
    before update on employees 
    for each row 
begin 
    :new.modified_at := sysdate; 
end; 
/ 
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; 
+1

업데이트 할 때 당신은 단지 일을하는 경우 삭제 또는 삽입을위한 방아쇠를 발사 할 필요가 없습니다. –

+1

사실입니다. 이것은 우리가 사용하는 감사 트리거 템플릿 (업데이트/삭제시 감사 레코드를 삽입하는 곳)에서 발췌 한 것입니다. –

+0

완전히 새로운 트리거를 혼동시킬 수 있습니다. –

관련 문제