일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- java
- 싱글톤
- security
- 프로그래머스
- input태그
- 시큐리티
- JAVA11
- 목록
- 시큐리티로그인
- javascript
- 리눅스
- 스프링 부트
- 2차원배열
- gradle
- html
- 시큐리티 로그아웃
- 로그인
- Linux
- 시큐리티 로그인
- 코딩테스트
- springboot
- 반복문
- programmers
- springSecurity
- codingtest
- sql
- css
- Spring boot
- 소스트리
- StyleSheet
Archives
- Today
- Total
JAVAIARY
트리거 (TRIGGER) 본문
1. 트리거
- DBMS시스템에서 INSERT, UPDATE, DELETE등의 이벤트가 발생할 때마다
관련 작업이 자동으로 수행되는 절차형 SQL - 트리거는 데이터베이스에 저장되며, 데이터 변경 및 무결성 유지, 로그메시지 출력 등의 목적으로 사용
- 트리거의 구문에는 DCL(데이터 제어어)사용 불가
DCL이 포함된 프로시저나 함수를 호출하는 경우에도 오류 발생 - 트리거에 오류가 있는 경우 트리거가 처리하는 데이터에도 영향을 미치므로
트리거 생성 시 주의 필요
2. 트리거 구성
* 필수
DECLARE*
EVENT*
BEGIN*
CONTROL
SQL
EXCEPTION
END*
- DECLARE* : 트리거의 명칭, 변수 및 상수, 데이터 타입을 정의
- EVENT* : 트리거가 실행되는 조건을 명시
- BEGIN/END : 트리거의 시작과 종료 의미
- CONTROL : 조건문 또는 반복문이 삽입되어 순차적으로 처리됨
- SQL : DML문을 이용한 데이터 조회,추가, 수정, 삭제 작업 수행 (DML 외의 다른 구문 사용 불가)
- EXCEPTION: BIGIN/END 구문 실행 중 예외 발생시 수행할 작업
3. 트리거의 생성
CREATE(OR REPLACE) TRIGGER 트리거명 (동작시기 옵션)(동작 옵션) ON 테이블명
REFERENCING (NEW/OLD) AS 테이블명
FOR EACH ROW
(WHEN 조건식)
BEGIN
트리거 BODY;
END;
- OR REPLACE: 선택옵션 . 동일 이름의 트리거가 존재한다면 기존의 트리거르 대체(덮어씌움)
- 동작시기 옵션 : 트리거가 실행될 때 지정 (AFTER, BEFORE)
- AFTER: 테이블이 변경된 후에 트리거 실행
- BEFORE : 테이블이 변경되기 전에 트리거 실행
- 동작 옵션: 트리거가 실행되게 할 작업의 종류 지정 (INSERT, DELETE, UPDATE)
- INSERT: 테이블에 새로운 튜플을 삽입할 때 트리거 실행
- DELETE: 테이블의 튜플을 삭제할 때 트리거 실행
- UPDATE: 테이블의 튜플을 수정할 때 트리거 실행
- NEW/OLD : 트리거가 적용될 테이블의 별칭을 지정함
- NEW : 추가되거나 수정에 참여할 튜플들의 집합(테이블)
- OLD : 수정되거나 삭제 전 대상이 되는 튜플들의 집합(테이블)
- FOR EACH ROW : 각 튜플마다 트리거를 적용한다는 뜻
- WHEN 조건식 : 선택옵션,. 트리거를 적용할 튜플의 조건 지정
- 트리거 BODY : 트리거의 본문 코드. BEGIN/END 사이에 적어도 하나 이상의 SQL문 필요
CREATE TRIGGER 학년정보_TRI BEFORE INSERT ON 학생
REFERENCING NEW AS NEW_TABLE
FOR EACH ROW
WHEN (NEW_TABLE.학년 IS NULL)
BEGIN
:NEW_TABLE.학년 := '신입생';
END;
- :NEW_TABLE
- 속성 NEW 혹은 OLD로 지정해 준 테이블 앞에 항상 지정되어야 함
- :=
- 우변 값을 좌변에 할당
4. 트리거의 제거
DROP TRIGGER 트리거명;
'lectureNote > SQL' 카테고리의 다른 글
커서(Cursor)란? (0) | 2023.07.12 |
---|---|
사용자 정의 함수 (0) | 2023.07.09 |
프로시저 (PROCEDURE) 생성, 실행 , 삭제 (0) | 2023.07.05 |
Oracle) NVL, UNION, OUTERJOIN표현식 (1) | 2023.06.04 |
ibatis ) isNotEmpty 태그 (0) | 2023.05.25 |