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 | 31 |
Tags
- 너비우선탐색
- DFS
- 프로그래머스
- 파이썬
- 스택
- 브루트포스
- 그리디 알고리즘
- javascript
- 백준 알고리즘
- 그래프 이론
- 완전탐색
- Python
- SW Expert Academy
- oracle
- 브루트포스 알고리즘
- BFS
- 백준알고리즘
- 문자열
- SWEA
- 자바스크립트
- 깊이우선탐색
- 백트래킹
- 다익스트라
- 너비 우선 탐색
- 데이터베이스
- DP
- 그래프 탐색
- 다이나믹 프로그래밍
- 구현
- 오라클
Archives
- Today
- Total
민규의 흔적
[오라클 DB] 트리거(Trigger) 본문
트리거
명시된 이벤트(데이터베이스의 갱신)가 발생할 때마다 DBMS가 자동적으로 수행하는 SQL문이다.
데이터베이스의 무결성 유지와 성능을 위한 일반적이고 강력한 도구이다.
이벤트-조건-동작 (ECA) 규칙이라고도 부른다.
트리거를 활성화시키는 사건인 이벤트(Event)
트리거를 활성화되었을 때 수행되는 테스트인 조건(Condition)
트리거가 활성화되고 조건이 참일 때 수행되는 문(프로시저)인 동작(Action)
SQL3에서 트리거의 형식
CREATE TRIGGER <트리거 이름>
AFTER <트리거를 유발시키는 이벤트들이 OR로 연결된 리스트> ON <릴레이션> <- 이벤트
WHEN <조건> <- 조건
BEGIN <SQL문(들)> END <- 동작
이벤트로는 테이블에 튜플 삽입, 테이블로부터 튜플 삭제 또는 수정 등이 존재하여, 어떤 이벤트가 발생했을 때 조건이 참이 되면 트리거와 연관된 동작이 수행되고, 그렇지 않으면 아무 동작도 수행되지 않는다.
트리거의 분류
삽입, 삭제, 수정 등이 일어나기 전(before) 동작 트리거와 일어난 후(after) 동작 트리거
테이블 수준의 트리거와 행 수준의 트리거
예제 질의
질의 : 새로운 직원이 등록할 때, 등록 정보를 EMPLOYEE_LOG 릴레이션에 삽입 하는 트리거를 작성하시오.
CREATE OR REPLACE TRIGGER AFTER_EMPLOYE_EVENT
AFTER INSERT ON EMPLOYEE FOR EACH ROW
BEGIN
INSERT INTO EMPLOYEE_LOG
VALUES (:new.empno, :new.empname);
END;
EMPLOYEE 릴레이션에 튜플을 삽입하였을 때, 로그를 삽일할 EMPLOYEE_LOG 릴레이션을 아래와 같이 작성하여 생성한다.
CREATE TABLE EMPLOYEE_LOG(
EMPNO NUMBER NOT NULL,
EMPNAME
);
이후, EMPLOYEE 릴레이션에 새로운 튜플을 아래와 같이 삽입하여 보자.
INSERT INTO EMPLOYEE VALUES (1001, '김민지', '사원', 1003, 1500000, 2);
EMPLOYEE 릴레이션에 삽입 연산을 진행하면 EMPLOYEE_LOG 릴레이션에 EMPNO와 EMPNAME 애트리뷰트 값을 삽입하도록 트리거를 설정해 놓았기 때문에, 아래와 같이 EMPLOYEE_LOG 릴레이션에 데이터가 추가되어야 한다.
'데이터베이스' 카테고리의 다른 글
[오라클 DB] ER(Entity Relationship) 모델 - 엔티티 타입 (0) | 2023.10.22 |
---|---|
[오라클 DB] 데이터베이스 설계 (0) | 2023.10.22 |
[오라클 DB] 데이터 조작어(DML) - INSERT, DELETE, UPDATE문 (0) | 2023.10.21 |
[오라클 DB] 데이터 조작어(DML) - SELECT문 (0) | 2023.10.21 |
[오라클 DB] 데이터 정의어(DDL) (0) | 2023.10.18 |