* Youtube Link - https://www.youtube.com/watch?v=_X6GOarxaXg&list=PLVsNizTWUw7FzFgU1qe-n7_M7eMFA9d-f&index=33
11.3.3 재귀 트리거
실습용 테이블 준비
- (1) 간접 재귀 트리거용 테이블 A,B 생성 및 시퀀스 생성
- 트리거의 단계 숫자가 저장되는 테이블
이렇게 0으로 초기화 시키고, 계속해서 값을 올리는 테이블이다.
- 간접 재귀 트리거 테스트를 위한 트리거 A, B 생성
recuA 테이블에 입력을 하면 트리거가 작동을 해서
recuB 테이블에 입력되도록 한다.
그리고 recuB 테이블에 입력되면
recuA 테이블에 입력되도록 한다.
이렇게 서로를 간접적으로 재귀한다.
- 호출
그리고 recuA에 데이터를 입력하면
서로를 무한히 재귀하여 트리거가 작동하므로
50번까지 작동을 하고
이후에는 에러가 나서 롤백된다.
- 50번 반복 횟수 제한 트리거
IF문을 주어서 반복횟수가 50회가 넘어가면
자동으로 트리거를 탈출하도록 만들었다.
값들이 정상적으로 들어간다.
11.3.4 순차번호의 자동 입력 트리거
- 테스트 테이블
- 시퀀스 (10000값부터 증가)
- 트리거 생성
BEFORE INSERT: 입력되기 이전에
INSERTING: 입력 중인가
:NEW.seqNum IS NULL : :NEW 테이블에 있는 seqNum이 null인가?
SELECT autoSEQ.NEXTVAL INTO :NEW.seqNum FROM DUAL; 을 통해서 다음 시퀀스 값을 :NEW 테이블에 시퀀스 값으로 넣어준다.
:NEW 테이블에 있는 값은 자동으로 새 테이블에 입력된다.
이렇게 순차적으로 시퀀스값이 자동으로 입력되는 트리거를 만들어보았다.
감사합니다.
'Oracle' 카테고리의 다른 글
[이것이 오라클이다] 12장 2교시: [Oracle] HTML, PHP 기본문법, PHP와 HTML 관계 (3) | 2024.11.14 |
---|---|
[이것이 오라클이다] 12장 1교시 : [Oracle] 웹 사이트 개발환경 구축 (1) | 2024.11.13 |
[이것이 오라클이다] 11장 2교시 : [Oracle] BEFORE 트리거, INSTEAD OF 트리거, 중첩 트리거 (3) | 2024.11.12 |
[이것이 오라클이다] 11장 1교시: [Oracle] 트리거 개념과 사용법, AFTER 트리거, :NEW와 :OLD 테이블 (1) | 2024.11.12 |
[이것이 오라클이다] 10장 4교시: [Oracle] 커서, 패기 (1) | 2024.11.12 |