728x90
반응형
SMALL

* 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 테이블에 있는 값은 자동으로 새 테이블에 입력된다.

이렇게 순차적으로 시퀀스값이 자동으로 입력되는 트리거를 만들어보았다.

 

감사합니다.

728x90
반응형
LIST

+ Recent posts