Notice
Recent Posts
Recent Comments
Link
반응형
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- oracle
- 배열
- 코테
- SQL
- 참조형
- toLowerCase
- 문자열
- 자바
- 알고리즘
- 디비
- 1단계
- 도메인
- Integer
- Java
- string
- 1level
- Math.min
- 코딩테스트
- StringBuffer
- 1lv
- 짝수
- 오라클
- Linux
- 프로그래머스
- PARSEINT
- 1레벨
- programmers
- Math.max
- 데이터베이스
- substring
Archives
- Today
- Total
웹 프로그래밍
트리거(TRIGGER) - ORACLE DB 본문
반응형
■ 트리거(TRIGGER)란?
1. 연쇄 작용, 방아쇠 같은 의미로, 특정 명령어를 실행할 때 동시에 실행될 수 있는 로직으로 정의하는 기법.
2. 테이블이나 뷰가 INSERT, UPDATE, DELETE 등의 DML문에 의해 변경될 경우 자동으로 실행될 내용을 정의하여 저장하는 객체.
■ 문법
CREATE OR REPLACE TRIGGER <트리거명> <시점> <이벤트> ON <테이블|뷰 이름>
[FOR EACH ROW] -- 트리거 유형
BEGIN
-- 트리거 작동 내용
END;
/
- 이벤트 : INSERT, UPDATE, DELETE
- 시점 : BEFORE(이벤트 전), AFTER(이벤트 후)
- FOR EACH ROW : 트리거 유형
1. 문장 트리거 : 이벤트 발생 시 테이블, 뷰 단위로 한 번만 실행되는 유형
2. 행 트리거 : 이벤트 발생 시 실행 내용이 행 단위로 실행 되는 유형
- 트리거 실행 방법
SELECT * FROM ALL_TRIGGERS; -- 모든 트리거 목록 조회
SELECT * FROM USER_TRIGGERS; -- 해당 사용자의 트리거 목록 조회
SELECT * FROM USER_SOURCE; -- 트리거 상세 코드 조회
SELECT * FROM USER_SOURCE WHERE NAME = '트리거명'; -- 특정 트리거의 상세 코드 조회
- 삭제하는 방법
DROP TRIGGER TEST_TRIGGER3;
■ 예제
DEPARTMENT 테이블의 L1 -> R1으로 변경(UPDATE 사용)
-- 문장 트리거
CREATE OR REPLACE TRIGGER TEST_TRIGGER2 AFTER UPDATE ON DEPARTMENT
BEGIN
DBMS_OUTPUT.PUT_LINE('부서가 변경되었습니다.');
END;
/
UPDATE DEPARTMENT SET LOCATION_ID = 'R1' WHERE LOCATION_ID = 'L1';
-- 행 트리거
CREATE OR REPLACE TRIGGER TEST_TRIGGER3 AFTER UPDATE ON DEPARTMENT
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('부서가 변경되었습니다.');
END;
/
UPDATE DEPARTMENT SET LOCATION_ID = 'R1' WHERE LOCATION_ID = 'L1';반응형
'DB(SQL) > oracle' 카테고리의 다른 글
| 상위 데이터 조회(Rownum, Top) - Oracle, Mssql (0) | 2023.02.23 |
|---|---|
| 컬럼 추가, 삭제, 수정, 변경(ALTER) - Oracle (0) | 2023.02.09 |
| 시퀀스(SEQUENCE) - Oracle (0) | 2023.02.05 |
| 프로시저(Procedure), 함수 - ORACLE DB (0) | 2021.09.28 |
| PL/SQL의 기초 및 선언(변수 활용, 조건문, 반복문) - ORACLE DB (0) | 2021.09.28 |