2011-12-19 3 views
1

Ok. 그래서 테이블 A에서 작업이 이루어질 때 테이블 B를 변경하는 트리거를 만드는 방법을 알고 있습니다.이 작업은 비교적 쉽고 편안합니다. 내가 할 수 없었던 것은 if 문을 포함하는 트리거를 생성하여 특정 기준이 충족되면 실행되도록하는 것입니다.Oracle APEX - 데이터베이스 트리거의 If 문

예 :

& 표 A 표 B가 관련되어있다. 표 A는 고유 한 처리 코드로 식별되는 현재 처리중인 문서에 관한 데이터를 포함합니다. 표 B에는 게시 ID로 식별되는 최종 및 릴리스 된 문서에 대한 데이터가 포함되어 있습니다. 문서가 많은 개정을 거칠 수 있기 때문에 표 A와 표 B가 관련되어 있으므로 표 B에 한 번만 나타나는 동안 표 A (고유 한 처리 코드이지만 동일한 발행물 ID)에 여러 번 나타날 수 있습니다. 발행물 ID는 수정 횟수에 관계없이 문서 수명 기간 동안 동일하게 유지됩니다.

표 A는 사람들이 우리에게 처리 할 문서에 관한 요청을 제출하는 입력 양식을 통해 채워집니다. 그들은 새 문서를 처리하도록 선택하거나 이미 표 B에있는 현재 문서를 수정하려는 경우 라디오 그룹 (신규, 개정 등 ...)을 통해 이루어집니다. '개정'을 선택하면 표 B의 발행 ID로 채워진 선택 목록 상자가 나타나고 사용자는 편집 할 문서를 선택할 수 있습니다.

내가해야할 일은 입력 양식을 통해 요청을 제출할 때 표 B의 문서 개정판인지 확인하고 표 B의 '상태'열은 '진행중인 개정'입니다.

따라서 조건부로 호출되거나 트리거 자체에 if 문이 있어야합니다. 조건은 다시 표 A의 입력 양식에서 '개정'을 선택한 다음 선택한 출판 ID의 상태를 '진행중인 개정'으로 설정하는 것입니다.

감사합니다.

답변

2

의사 코드는 다음과 같이해야한다, 테이블 A에 정상 행 레벨 트리거해야합니다 ..

만들거나 경우에 ..... 각 행에 대해 을 테이블 A에 트리거를 교체 : NEW.process_selected = 'Revision'then update b status = 'Revision in Progress' 여기서 publication_id = : publication_id; end if; 끝;

-sanjeev

1

APEX를 사용한 이후로 오랜 시간이 걸렸지 만 양식을 직접 테이블이 아닌 pl/sql 프로 시저에 제출할 수 없습니까? 그런 다음 입력 매개 변수에 따라 적절한 조치를 취하는 프로 시저를 작성하십시오.

+0

양식을 테이블에 제출해야합니다. 난 그냥 다른 테이블의 값을 조건부로 변경하는 트리거를 설정하는 제출 작업을 원합니다. – Spags