요구 사항에 따라 우리는 고유 한 상황에 직면 해 있습니다. 우리는 특정 제출자 ID에 대해서만 테이블에 가상 기본 키를 만들고 싶습니다. 주 : 제출자 ID는 테이블의 컬럼 중 하나입니다.Oracle PLSQL 트리거의 논리처럼 기본 키를 생성하는 동안 컴파일
우리는이 목표를 달성하기 위해 트리거를 사용하기로 결정했으나 삽입을 위해 잘 동작하지만 업데이트를 확인할 때 다음과 같은 오류가 발생합니다 : [ORA-04091 : 테이블 XYZ가 변경 중이며 트리거/기능에서 볼 수 없습니다]
워크 플로우 이해하기위한 샘플 예 : (시퀀스, Submitter_id, 국가, 설명)
고유 기본 키
테이블 구조 : 순서
Submitte하는 경우 r_id = 'SYSTEM'그러면 국가에 가상 기본 키가 필요합니다. 업데이트하는 동안 오류를주고있다 테이블 XYZ에 BEFORE INSERT OR UPDATE 트리거에 대한
현재 코드 : 사전에
If (:NEW.Submitter_Id = 'SYSTEM') Then
BEGIN
SELECT count(1) INTO counterVariable
FROM XYZ
WHERE Country = :NEW.Country
And Submitter_Id = 'SYSTEM';
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20005, 'Sample Error');
END;
If (counterVariable != 0)
Then
raise_application_error(-20005, 'Primary Key Violation error');
End If;
End If;
감사합니다.
http://stackoverflow.com/questions/17609844/how-to-make-a-trigger-like-primary-key-constraint 비슷한 질문이 있지만 구체적인 해결책없이. 기본 키 제약 조건 또는 고유 인덱스를 포함하지 않는 문제를 해결하는 방법을 찾고 있습니다. – pOrinG