프로그래밍 세계/Database

[oracle] 트리거 로그 메시지 남기기

깡다구짱 2008. 10. 3. 17:29

 

트리거 로그 메시지 남기기

- 로그 메시지를 남기기 위해 테이블을 하나 생성하고 트리거에서의 컬럼이름과 이떄 테이블의 컬럼이름을 같게 해야한다.

- 트리거를 이용하여 해당 테이블에 접근을 할 때 로그 메시지 테이블에 접근한 정보를 삽입하므로써 메시지를 남길 수 있다.


로그 메시지를 남길 m_log 테이블 생성


 

SQL> create table m_log
  2  (
  3  m_who varchar2(10),
  4  m_action varchar2(100),
  5  m_when date
  6  );

테이블이 생성되었습니다.

 


트리거 생성


 

SQL>
SQL> create or replace trigger w_action
  2   before insert or update or delete on student
  3   declare
  4      l_action  m_log.m_action%type;
  5   begin
  6     if INSERTING then l_action := 'Insert';
  7     elsif UPDATING then l_action := 'Update';
  8     elsif DELETING then l_action := 'Delete';
  9     end if;
 10     insert into m_log (m_who, m_action, m_when)
 11     values(user, l_action, sysdate);
 12   end;
 13  /

트리거가 생성되었습니다.

 


student 티이블에 데이터 삽입 명령실행

 

insert into student values( '100', 'tirgeer', 'seoul', to_date('1974-07-09', 'YYYY-MM-DD'), '1');


 

SQL> @trigger4.sql

1 개의 행이 만들어졌습니다.

 


m_log에서 로그 메시지 확인


SQL> select * from m_log;

M_WHO
--------------------
M_ACTION
--------------------------------------------------------------------------------
M_WHEN
--------
S4406144
Insert
07/11/13


SQL>

 


트리거 삭제

drop trigger m_log;


 

트리거 생성 에러 발생시 에러 메시지 보기

show errors