2015-01-14 4 views
1

두 테이블 ZTR_DEPT (마스터 테이블)과 ZTR_EMP (자식 테이블)을 만들었습니다. 마스터에 일치하는 레코드가없는 동안 하위 레코드가 삽입되었습니다.

   deptno(pk) | deptname      empno(pk) | name | city | deptno(fk)  
       -------------------------      ------------------------------------ 

나는 단순히 오류를보고하지 않고 데이터베이스에 삽입 ABAP 프로그램을 통해 부모 테이블에서 기록을 일치 가지고 있지 자식 테이블에 레코드를 삽입합니다. 레코드를 수동으로 자식 테이블에 삽입 할 때 오류가 표시됩니다.

이러한 불일치의 이유는 무엇입니까?

+3

... 그리고 질문은 ...? – vwegert

답변

1

수동 삽입으로 무엇을 의미하는지 완전히 모르겠으나 SE16N 또는 SE16과 같은 트랜잭션으로이 작업을 수행한다고 가정 할 수 있습니다.

프로그래밍 방식 삽입에 관해서는 걱정할 필요가 있습니다. 데이터 사전 (SE11)의 검사 필드를 정의하더라도 외래 키 제약 조건에 대한 검사는 전혀 없습니다. 데이터베이스 레벨에 대한 유효성 검증은 없습니다. SE16N에있는 오류는이 트랜잭션이 응용 프로그램 수준의 일관성을 검사하므로 작업중인 응용 프로그램 서버에서 실행되는 ABAP 코드의 검사가있을 가능성이 있습니다. 이 경우 데이터베이스를 제외하고 레코드를 거부하는 응용 프로그램입니다.

그래서 동일한 작업을 수행하려면 하위 테이블의 외래 키가있는 마스터 테이블에서 레코드를 선택하여 직접 유효성을 검사해야합니다. sy-subrc이 이니셜이 아닌 경우 하위 테이블에 대한 INSERT 문으로 진행하지 않고 대신 예를 들어 오류 메시지를 반환합니다.

+0

수동 삽입은 goto utilities-> create enties입니다. – satya

+0

어떤 거래가 있습니까? – Jagger

관련 문제