Oracle Database /SQL

SQL PL(Trigger)

연찌현찌 2018. 6. 29. 15:03

/*


    Trigger : 촉발시키다

                자동호출 == callback 함수    

    Procedure, Function, Trigger : PL의 3대요소

    

    호출되는 시점 전까지 대기상태이다.


*/




CREATE OR REPLACE TRIGGER triger_test

BEFORE

UPDATE ON departments

FOR EACH ROW


BEGIN

DBMS_OUTPUT.PUT_LINE('변경 전 컬럼 값 : ' || :old.department_name); -- 창이 뜨면 그냥 enter로 넘어가자

DBMS_OUTPUT.PUT_LINE('변경 후 컬럼 값 : ' || :new.department_name);

END;

 /


SET SERVEROUTPUT ON; 

UPDATE departments SET 

department_name = '개발부' 

WHERE department_id = 60;


SELECT

    *

FROM DEPARTMENTS;


ROLLBACK;



SELECT

    *

FROM DEPARTMENTS

WHERE DEPARTMENT_ID = 60;



CREATE OR REPLACE TRIGGER PRINT_MSG

AFTER 

INSERT ON DEPARTMENTS


BEGIN

DBMS_OUTPUT.PUT_LINE('DEPARTMENTS 테이블에 정상적으로 추가했습니다');  

END;

/


INSERT INTO DEPARTMENTS

VALUES(300, '개발부', NULL, NULL);


ROLLBACK;