트리거란?
<<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 |