트리거 관련 질문드립니다. 0 3 773

by DB초보자입니다 [PL/SQL] [2017.08.17 17:06:51]


안녕하세요 이번에 트리거를 사용 할 작업이있어 트리거 관련 내용을 찾다가 

궁금중이 생겨 문의드립니다.

트리거 관련 내용을 찾아보니 행 트리고 ,문장 트리거가 있는데

행 트리거나 행이 변경될때마다 동작하고 문장 트리거는 inser,update, delete 시 한번만 동작된다고 나와있는거같은데

만약 3개의 행이 변경되었을대 행 트리거를 사용해서 

new/old 를 사용해서 행의 현재 값이나 이전값을 가져올수있는데

3개의 행이 아닌 다수의 로우를 insert update delete 시 행트리거 사용시 문제점이 없는지 궁금하고

문장 트리거 I,U,D발생 될 때마다 한번씩 동작하니깐

문장 트리거를 행트리거처럼 사용할 수는 없을까요?

by 마농 [2017.08.17 17:35:14]

1. DML 문장 하나에 3건의 자료가 갱신된다면?
  - 문장트리거는 1회 수행, 행트리거는 각 행별 1회씩 총 3회 수행되겠지요.
  - OLD/NEW 를 사용하려면 행트리거를 해야 합니다.
2. (3개의 행)이 아닌 (다수의 로우)를...
  - 그게 그말 아닌가요? ㅎㅎ
  - 3개가 문제 없으면 다수도 문제 없죠.


by 마농 [2017.08.17 18:14:15]

1. 다시 질문을 찬찬히 읽어 보니
  - 문제점이라는게 성능 문제를 말하는 듯 하네요.
  - 트리거 사용시 입력 성능은 당연히 떨어집니다.
  - 소량일 때는 못느끼지만, 다량일 때는 체감속도가 느껴지죠.
2. 다량의 자료를 한거번에 배치로 입력해야 한다면?
  - 트리거 끊고
  - direct load 로 올리고
  - 트리거 수행 로직을 별도로 프로그래밍하여 수행하고
  - 트리거 살리는 방법.


by DB초보자입니다 [2017.08.18 10:10:48]

답변감사드립니다.

로그성 테이블에 다량으로 트리거를 사용해서 로그를 남기려고 하다보니 성능에 대한 문제가 궁금하였고 마농 덕에 궁금증이 풀렸네요!!!진심으로 답변 감사드립니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입