[oracle] 트리거 로그 메시지 남기기
트리거 로그 메시지 남기기
- 로그 메시지를 남기기 위해 테이블을 하나 생성하고 트리거에서의 컬럼이름과 이떄 테이블의 컬럼이름을 같게 해야한다.
- 트리거를 이용하여 해당 테이블에 접근을 할 때 로그 메시지 테이블에 접근한 정보를 삽입하므로써 메시지를 남길 수 있다.
로그 메시지를 남길 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