트리거 조건 걸때 질문좀하겠습니다 0 1 374

by 겸둥이k [SQL Query] 트리거 조건 [2019.04.05 15:39:35]


 
create or replace TRIGGER "A.T_SCHEDULE" AFTER UPDATE ON A.T_SCHEDULE
FOR EACH ROW
BEGIN 
--조건 IF STATE_DIV='시작'???
  IF   :OLD.CELL_GROUP             <> :NEW.CELL_GROUP
  OR  :OLD.USE_DIV                <> :NEW.USE_DIV
  OR  :OLD.TOP_DIV                <> :NEW.TOP_DIV
    THEN 

            INSERT INTO  A.T_SCHEDULE_LOG  (
                      CELL_GROUP           
		      ,USE_DIV              
		      ,TOP_DIV  
         )
            VALUES(
			  :OLD.CELL_GROUP          
			  ,:OLD.USE_DIV             
			  ,:OLD.TOP_DIV      
       ) ;
--조건 IF STATE_DIV='중간'???
  IF   :OLD.CELL_GROUP             <> :NEW.CELL_GROUP
  OR  :OLD.USE_DIV                <> :NEW.USE_DIV
  OR  :OLD.TOP_DIV                <> :NEW.TOP_DIV
    THEN 

            INSERT INTO  A.T_SCHEDULE_LOG  (
                      CELL_GROUP           
		      ,USE_DIV              
		      ,TOP_DIV  
         )
            VALUES(
			  :OLD.CELL_GROUP          
			  ,:OLD.USE_DIV             
			  ,:OLD.TOP_DIV      
       ) ;
--조건 IF STATE_DIV='끝'???
  IF   :OLD.CELL_GROUP             <> :NEW.CELL_GROUP
  OR  :OLD.USE_DIV                <> :NEW.USE_DIV
  OR  :OLD.TOP_DIV                <> :NEW.TOP_DIV
    THEN 

            INSERT INTO  A.T_SCHEDULE_LOG  (
                      CELL_GROUP           
		      ,USE_DIV              
		      ,TOP_DIV  
         )
            VALUES(
			  :OLD.CELL_GROUP          
			  ,:OLD.USE_DIV             
			  ,:OLD.TOP_DIV      
       ) ;
 END IF;  
END ;

 

저기 조건에따라 다른 컬럼을 추가시키고 싶은데  위에 조건처럼 하면될까요? 끝에 마감처리도 END IF 로만하면될까요?

만약 IF 가 된다면 WHEN 으로할때는 끝마침을 END WHEN 으로하면될까요? 

좋은답변 부탁드립니다

by 마농 [2019.04.05 16:23:41]

1. IF 문 사용법은 다음과 같습니다.
IF 조건1 THEN
  처리1;
ELSIF 조건2 THEN
  처리2;
ELSE
  처리3;
END IF;

2. 특정컬럼 업데이트 트리거는
  - :OLD.컬럼 <> :NEW.컬럼 방식의 비교는 널값을 제대로 체크하지 못합니다.
  - AFTER UPDATE OF 컬럼1, 컬럼2 형태로 사용하시면 편리합니다.

3. 로직 질문은
  - 전반적으로 설명이 너무 다 알고 있는 본인 위주입니다.
  - 아무것도 모르는 다른 사람이 알아들을 수 있게 설명해 주세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입