생성 스크립트에 대한 트리거 순서에 대하여 질문 드립니다.

by 제로미 posted May 17, 2021

안녕하세요. 큐브리드로 개발 중인 시스템 개발자 중 한명입니다.

기존 AS-IS 소스가 존재하여 트리거 부분을 살펴보고 있는데, 아래와 같은 구문이 있어 질문을 드립니다.

아래는 트리거 생성 스크립트 중 일부 입니다. (테이블명은 임의로 변경하였습니다.)

 

CREATE TRIGGER [aaa_trg01]
  PRIORITY 0.00999999977648258
  BEFORE INSERT ON aaa
  EXECUTE AFTER MERGE
INTO             [aaa] [a] ....중략....

 

위에보면 BEFORE INSERT ON 이 있고 아래쪽에 EXECUTE AFTER가 있어 이 트리거에 대한 실행 시점에 대한 혼동이 있습니다.

속성에서 보여지는 Action Time은 AFTER로 나오고 있는데, BEFORE INSERT ON 처럼 생성문에 BEFORE 와 AFTER 가 있다보니 아무래도 찜찜하여 질문을 드립니다.

이렇게 스크립트가 보여지면 속성에 나온대로 AFTER로 동작하는 것인지, 아니면 속성이 잘못나오고 BEFORE로 동작하는 것인지 답변해 주시면 감사하겠습니다.

그리고 BEFORE와 AFTER가 저렇게 있을경우 어떤 것을 의미하는 것인지도 답변해주시면 감사하겠습니다.

 

- 추가

 

설명서를 읽고 있는데 첫번째 BEFORE의 경우 Condition Time(조건절)에 대한 순서의 표현인 것 같은데, 맞나요?

설명서에는 위 처럼 혼용되는 경우가 없어 정확한 판단이 어렵네요.

위 트리거 문에는(이미 AS-IS에 존재하는 트리거입니다) 조건절이 보시는 것처럼 존재하지 않습니다.

그렇다면 BEFORE는 아무런 의미가 없는 건가요? 일단 속성창에서 Condition Time은 아무것도 보이지 않고 있습니다. (SQL gate 큐브리드용을 쓰고 있습니다.)

조건절이 없음에도 저런 스크립트가 가능한지 궁금합니다.


Articles

2 3 4 5 6 7 8 9 10 11