오라클 트리거 질문 0 1 1,114

by 와아아앙 [PL/SQL] [2019.08.12 15:32:26]


before insert 트리거에서

 FOR EACH ROW 로 작업시 

각 행마다 조건을 체크해서 조건(다른 테이블의 행 조건 여부)에 해당하는 행은 에러 안띄우고 insert 취소 할 수 있나요??

insert하기 전에 exists 로 체크해서 insert 하는 로직은 지금 제한이 걸려있어서 트리거로 작업해야 할꺼 같습니다.

by 마농 [2019.08.12 16:15:17]

1. 트리거는 하나의 트렌젝션이므로 일부만 취소는 불가능 할 듯 합니다.
 - 트리거가 아닌 인서트 쿼리에서 조건을 주는 방법이 좋아 보이는데.
 - 이 방법을 사용하지 않는 이유가 뭔지 궁굼하네요.
2. 테이블에 직접 입력이 아닌 뷰에 입력하는 방안은 어떤가요?
 - 뷰에 instead of trigger 를 걸어서 구현할 수 있을 듯 합니다.
3. DML Error Logging 기능을 활용하는 방안은 어떤가요?
 - 전체중 일부만 에러일 때 전체 롤백되는 문제 해결
 - 에러 레코드만 별도 에러로그테이블에 저장하고 정상 레코드는 그대로 커밋 가능
 - http://gurubee.net/article/53366

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