[ORACLE] Trigger
Posted 2008/04/15 16:041. BEFORE / INSERT
// student Table에 Insert하기 전에 동작하는 Trigger
CREATE OR REPLACE TRIGGER incr_count
BEFORE
INSERT ON student
FOR EACH ROW
WHEN (new.s_year < 3)BEGIN
DBMS_OUTPUT.PUT_LINE('저학년 :'|| :new.s_name);END;
/
2. 행 트리거
// dept 테이블에 UPDATE명령이 일어날 경우 반응
// :old, :new 연산자 사용
// :old.dname - 변경 전 부서 이름 , :new.dname - 변경 후 부서 이름
CREATE OR REPLACE TRIGGER triger_test
BEFORE
UPDATE ON dept
FOR EACH ROWBEGIN
DBMS_OUTPUT.PUT_LINE('변경 전 컬럼 값 : ' || :old.dname);
DBMS_OUTPUT.PUT_LINE('변경 후 컬럼 값 : ' || :new.dname);
END;
/
SQL> UPDATE dept
SET dname='총무부'
WHERE deptno=30
변경 후 컬럼 값 : 총무부
1개의 행이 갱신되었습니다.
0.00 초
3. BEFORE / INSERT or UPDATE
// row가 Insert되거나 Update되기 전에 전체 row의 평균을 구한다.
CREATE OR REPLACE TRIGGER sum_trigger
BEFORE
INSERT OR UPDATE ON emp
FOR EACH ROWDECLARE
--변수를 선언할 때 DECLARE문 사용
avg_sal NUMBER;BEGIN
SELECT ROUND(AVG(sal), 3)
INTO avg_sal
FROM emp;
DBMS_OUTPUT.PUT_LINE('급여 평균 : ' || avg_sal);END;
/
SQL> INSERT INTO emp(empno, ename, job, hiredate, sal)
VALUES(1000, 'LION', 'SALES', SYSDATE, 5000);
1개의 행이 삽입되었습니다.
0.03 초
'C.S.E > Database' 카테고리의 다른 글
| [ORACLE] Trigger (0) | 2008/04/15 |
|---|---|
| [ORACLE] Procedure (0) | 2008/04/15 |
| [ORACLE] Stored Procedure Exception (0) | 2008/04/15 |
| [ORACLE] Stored Procedure Programming (0) | 2008/04/15 |
| [ORACLE] Stored Procedure (0) | 2008/04/15 |
| [ORACLE] Stored Procedure를 사용한 Insert / Select 시간측정 (0) | 2008/04/14 |
- Filed under : C.S.E/Database
- Tag : Oracle, trigger
- Comment Trackback
이올린에 북마크하기