Trigger 사용하기 ( 트리거, Trigger )

|
안녕하세요 .
이번 포스팅은 Altibase Trigger(트리거) 정리 입니다.
Altibase Trigger(트리거) 생성 방법을 정리해 보았습니다.

1. Trigger(트리거) 란?
: 트리거란 데이터베이스 서버에서 특정 이벤트 발생 후 자동적으로 실행되는 Stored Procedure

  한 종류 입니다.

  즉,INSERT 등과 같은 이벤트 발생 후 자동으로 실행되는 또 하나의 Stored Procedure 라고 생각하시면

  될듯 합니다.





2. Trigger 생성하기
: 트리거를 생성은 SYS 사용자 또는 트리거를 생성할 수 있는 권한을 가진 사용자만 생성이 가능합니다.
+ ALTIBASE 트리거는 DELETE, INSERT, UPDATE DML 문에서 지정 가능 합니다.
+ ALTIBASE 트리거는 이중화(Replication)로 인한 테이블 변경(DML문 실행) 에 대해서는 트리거가 

   발생하지 않습니다.



EX )

CREATE TRIGGER INSERT_TRIGGER
AFTER[BEFORE] INSERT[UPDATE/DELETE] ON orders[TABLENAME]
REFERENCING OLD[NEW] ROW old_row[new_row]
FOR EACH ROW
AS BEGIN
INSERT INTO log_table VALUES(old_row.seq, old_row.name,sysdate);
END;
/



- Query를 한줄 씩 살펴 보도록 하겠습니다.


CREATE TRIGGER INSERT_TRIGGER // 트리거 생성 구문 시작이며 [INSERT_TRIGGER] 가 트리거의

                                                      이름입니다.


AFTER[BEFORE] INSERT[UPDATE/DELETE] ON orders[TABLENAME]
// AFTER는 이벤트 발생 후 BEFORE는 이벤트 발생전에 이 트리거를 실행 한다는 것입니다.
// INSERT,UPDATE,DELETE 구문 지정 및 TABLE 을 지정합니다. -- 지정된 TABLE에 DML 발생 시 생성한

   트리거가 동작합니다.


REFERENCING OLD[NEW] ROW old_row[new_row]
// 참조를 지정합니다. OLD는 DELETE 나 UPDATE 발생 시 삭제(업데이트) 되기전 데이터를 참조한다는

    것이며 NEW 는 INSERT,DELETE,UPDATE 발생 시 새로 생긴 데이터를 참조한다는 것입니다.

    뒤에 ROW 는 참조한 데이터의 이름을 지정하여 밑에서 사용합니다.

FOR EACH ROW // 변경된 ROW 만큼 FOR문을 수행합니다.

INSERT INTO log_table VALUES(old_row.seq, old_row.name,sysdate);
// 참조한 old_row(위에서 지정한 이름) 를 사용하여 seq 컬럼, name 컬럼 및 현재 시간을 log_table

    저장하는 query 를 실행 합니다.







3. Trigger 상태변경

- ALTER TRIGGER [trigger name] ENABLE : 트리거 사용
- ALTER TRIGGER [trigger name] DISABLE : 트리거 사용 중지
- ALTER TRIGGER [trigger name] COMPILE : 트리거 컴파일




* 감사합니다.

 

And