트리거(Trigger)

Database 2015. 9. 2. 01:36

트리거란?


<<ORACLE>>

// 트리거 예제
CREATE OR REPLACE Trigger SUMMARY_SALES                // (1)
    AFTER INSERT
    ON ORDER_LIST
    FOR EACH ROW
DECLARE                                                // (2)
    o_date ORDER_LIST.order_date%TYPE;
    o_prod ORDER_LIST.product%TYPE;
BEGIN
    o_date := :NEW.order_date;
    o_prod := :NEW.product;
    UPDATE SALES_PER_DATE                            // (3)
        SET qty = qty + :NEW.qty, amount = amount + :NEW.amount
    WHERE sale_date = o_date
        AND product = o_prod;
    if SQL%NOTFOUND    THEN                            // (4)
        INSERT INTO SALES SALES_PER_DATE
        VALUES(o_date, o_prod, :NEW.qty, :NEW.amount);
    end if;
END;
 
(1) Trigger를 선언한다.
CREATE OR REPLACE Trigger SUMMARY_SALES => 트리거 선언문
AFTER INSERT    => 레코드가 입력된 후 트리거 발생
ON ORDER_LIST    => ORDER_LIST 테이블에 Trigger 설정
FOR EACH ROW    => 각 ROW마다 Trigger 적용
(2) o_date(주문일자), o_prod(주문상품) 값을 저장할 변수를 선언하고, 신규로 입력된 데이터를 저장한다.
: NEW는 신규로 입력된 레코드의 정보를 가지고 있는 구조체
: OLD는 수정, 삭제되기 전의 레코드를 가지고 있는 구조체
(3) 먼저 입력된 주문 내역의 주문 일자와 주문 상품을 기준으로 SALES_PER_DATE테이블에 업데이트한다.
(4) 처리 겨로가가 SQL%NOTFOUND이면 해당 주문 일자의 주문 상품 실적이 존재하지 않으며, SALES_PER_DATE
    테이블에 새로운 집계 데이터를 입력한다. 
cs


'Database' 카테고리의 다른 글

데이터베이스의 인덱스 자료구조 B-TREE  (2) 2015.09.02
데이터베이스 정규화  (4) 2015.08.11
Posted by slender ankles
,