YJ의 새벽

PL/SQL 트리거(Trigger) 본문

SelfStudy/Oracle (SQL)

PL/SQL 트리거(Trigger)

YJDawn 2023. 1. 20. 15:55
  • 트리거

--테이블이 변경되면 이를 이벤트로 다른테이블이 자동으로 변경되도록 하기위해 사용.

 예 ))  입고 테이블에 상품이 입고되면 ( INSERT 이벤트발생 ) 

          재고 테이블에 자동으로 상품 증가 .

--BEFORE 타이밍은 INSERT , UPDATE , DELETE 문이 실행될때

  해당문장이 실행되기 전 트리거가 가지고있는 BEGIN~END 사이의 문장을 실행.

--AFTER 타이밍은 INSERT , UPDATE , DELETE 문이 실행되고 난 후

  트리거가 가지고있는 BEGIN~END 사이의 문장을 실행.

--행 레벨 트리거를 정의하고 할 때에는 FOR EACH ROW 를 기술!! 

   FOW EACH ROW 생략시 문장 레벨 트리거. 

--:OLD    :NEW   명령어.

--FOR EACH ROW 절이 있다면 행크리거이고, 행트리거에 한해 레코드의 값을 제어할수있다.

--   1) :OLD  = UPDATE , DELETE 되기 전의 값 접근가능

--          형식 :  :OLD + 컬럼이름 

--   2) :NEW = INSERT 되는값 . UPDATE 후의 값에 접근가능

--          형식 :  :NEW . 연산자 + 컬럼이름

 

--여러 사용자가 공유하는 데이터 보안성과 안정성 , 문제발생시 대처능력을 높인다.

--데이터와 연관된 여러 작업을 수행하기위해 일일히 

  PL/SQL문 또는 서브프로그램 (함수,프로시저)를 실행해야하는 번거로움을 줄임.

 

                 EX ))  '신입사원이 입사했습니다' 출력 트리거

트리거 생성
트리거 확인

 

 

                  EX ))  사원테이블 데이터 들어가면 자동으로 

                            급여테이블에 데이터를 생성하는 트리거

급여테이블 생성
시퀀스 생성
트리거 생성
들어온 값 확인

 

                  EX ))  사원이 삭제되면

                            사원의 급여정보도 자동삭제되는 트리거

 

DELETE 문 그냥 실행시 . EMP01 과 SAL01 이 묶여있어 삭제되지않는다. 트리거를 만들어 삭제.
DELETE 확인.

 

 

                  EX ))  입고 트리거 예제 . 

 

--입고테이블에 상품이 입력되면 입고수량을

   상품테이블의 재고 수량에 추가하는 트리거.

 

 

               EX )) 갱신 트리거 예제 . 

 

 

    

         EX )) TRIGGER 확인

 

 

  • 테이블에 보충설명 (COMMENT) 다는 방법

-- 테이블,컬럼에 보충설명달기    --> 수정할때도 같음.  --> 설명내용이 '' 라면 보충설명삭제.

     COMMENT ON TABLE 테이블명 IS ' 설명내용 ' ;

     COMMENT ON COLUMN 테이블명.컬럼명 IS '설명내용' 

-- 테이블,컬럼 보충설명 조회

     SELECT * FROM ALL_TAB_COMMENTS WHERE TABLE_NAME = '테이블명' ;   

     SELECT * FROM ALL_COL_COMMENTS WHERE TABLE_NAME = '테이블명' ; 

Comments