2012-06-13 5 views
1

여러 트리거를 사용하여 기본 키로 사용되는 시퀀스에서 값을 검색하는 Oracle 10 DB를 사용하고 있습니다. 이러한 트리거 중 하나는 이 비활성화되어이지만 테이블의 레코드가 유효한 기본 키와 함께 성공적으로 삽입되기 때문에 계속 발생하는 것처럼 보입니다.사용 안 함 트리거가 작동 중임

어떻게 가능합니까? 이 "삽입 전"트리거가 비활성화되었지만 여전히 작동하는 이유는 무엇입니까?

+3

1- 사용 중지 되셨습니까? user_triggers에서 상태를 선택 하시겠습니까? trigger_name = 'THE_TRIGGER_NAME''? 2 - 그럴 수있는 다른 트리거가 없다고 확신합니까? 'ALTER TABLE TABLE_NAME 모든 트리거 비활성화 '를 시도 할 수 있습니까? 3 - 어떻게 레코드를 삽입하고 있습니까? 간단한'insert 문 '으로? –

+2

삽입 문장이 시퀀스를 직접 호출 할 가능성이 있습니다. 그렇지 않으면 A.B.Cade가 말한 것입니다. –

+0

답변 해 주셔서 감사합니다. 간단합니다 : Jeffrey Kemp와 마찬가지로 쿼리는 시퀀스를 직접 호출합니다. – Nick

답변

2

삽입 문이 하나를 제공하지 않는 경우에만 (PK가 null) 트리거가 시퀀스를 호출하여 PK 값을 얻는다 고 생각합니다. 삽입을 수행하는 응용 프로그램은 아마도 시퀀스를 호출하고 PK 값을 제공합니다.

아마도 PK 값이 null 인 테이블에 레코드를 삽입하여 직접 테스트 할 수 있습니다. 오류가 발생하면 트리거가 비활성화됩니다.