티스토리 뷰

DB

트리거(Triggers)

tioon 2023. 5. 4. 12:39
트리거란?

-트리거는 데이터베이스 내의 특정 테이블에 대한 작업이 발생하였을때, 자동으로 실행되도록 만든 작업으로 이벤트가 발생하면 지정된 작업이 자동으로 실행되게 합니다. 이것을통해 자동화 기능이라던지, 데이터 무결성을 보호하기 위해 사용됩니다..

 

 

 

 

 

 

트리거 문법
CREATE TRIGGER trigger_name   //트리거 생성 및 이름
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}  OF 속성   //트리거 발생할 명령어 종류  
ON table_name

referencing  OLD AS (변경되기전 테이블) 
referencing  NEW AS (변경된 후 테이블)               //트리거 값 참조

[FOR EACH ROW | STATEMENT]  //트리거 실행 대상 (각각의 행 하나씩 , 행 전체 한번)

WHEN (condition) //트리거 실행 조건 

BEGIN
   --트리거 실행될 SQL문 작성
END;

트리거 문법은 다음과같습니다. 

  1. 트리거 생성 및 이름 생성
    -트리거의 이름을 생성합니다.

  2. on은 테이블 대상
    -트리거가 감시하고 실행될 테이블을 설정합니다.

  3. 트리거 발생 타이밍, 발생 종류 명시
    -트리거가 발생할 타이밍을 설정합니다. before은 트리거 발생 직전에 수행, after는 트리거 발생 직후에 수행
    insert,update,delete는 트리거가 어떤명령이 들어왔을떄 실행이 될지를 정합니다.
    INSERT ON 테이블이름 , UPDATE ON 테이블이름 , DELETE ON 테이블이름의 형식의 문법입니다.
    여기서 delete는 before에만 할 수 있고, insert는 after에만 할 수 있습니다.
    |
  4. 트리거 값 참조
    트리거가 실행되는 조건이 발생하게되면 필연적으로 테이블이 바뀌게 됩니다. 이때 테이블이 바뀌기전의 원래 값과 테이블이 바뀐후의 새 값을 참조하고 싶을때 쓰는 문법입니다. 필수는 아니며 선택적으로 사용할 수 있습니다.

  5. 실행 방식 명시
    -FOR EACH row는 트리거가 실행될때 한줄씩 각각 실행을하는 것이고, FOR EACH statement는 트리거가 실행될때 한 집합을 한꺼번에 실행을 하는 것입니다.(트리거로 많은 터플변화가 있을경우 statement가 유리함)

  6. 실행조건 명시
    -WHEN 문을 이용하여 트리거가 실행될 조건을 명시합니다.

  7. 실행문 명시
    -BEGIN,END를 이용해 트리거의 실행문을 입력합니다. 이는 트리거가 직접 실행하는 문으로 이전의 BEFORE,AFTER에 따라 실행 순서가 달라집니다. 이 안에는 SQL문이 들어올 수 있습니다.

 

 

 

 

 

 

EXAMPLE
CREATE TRIGGER trig_name
AFTER INSERT ON table_name
REFERENCING NEW AS new_row
FOR EACH ROW
WHEN (new_row.column_name > 100)
BEGIN
    INSERT INTO another_table (column1, column2) VALUES (new_row.column1, new_row.column2);
END;

이 트리거의 이름은 trig_name 이며 table_name의 테이블안에 insert문으로 테이블이 변경된후에 실행이됩니다. 또한 변경된후의 row값은 new_row로 참조를 하고있으며, 이는 각각의 한 행씩 진행됩니다.
진행조건은 new_row의 column_name이 100이상일때 트리거가 발동하며, 트리거는 새로운 테이블에 값들을 삽입합니다.

'DB' 카테고리의 다른 글

트랜잭션이란? (feat.TCL)  (0) 2023.08.10
데이터베이스 권한(grant,revoke)  (0) 2023.05.05
무결성 제약  (0) 2023.05.04
데이터베이스 뷰(VIEW)  (0) 2023.05.03
SELECT 기본구조  (0) 2023.04.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함