2011-04-13 5 views
2

SAP B1 (SAP Business One)이 다양한 테이블에서 사용하는 고유 기본 키를 생성하는 방법을 아는 사람이 있는지 궁금합니다. 내가 말하는 것에 대한 예시는 OCRD.DocEntryOCPR.CntctCode을 포함 할 것입니다. 이들은 "자동으로"증가하는 정수 열입니다.고유 ID/순차 번호는 SAP B1에서 어떻게 생성됩니까?

이 작업을 수행하는 일반적인 방법은 식별 열 (예 : SQL Server), 시퀀스 (예 : Oracle) 또는 프로그래밍 방식으로 증가되는 Nextval을 보유한 수동 시퀀스 테이블을 포함합니다. 내가 가장 잘 알 수 있듯이 B1은 이러한 기술에이 열을 사용하지 않습니다. 그러면 어떻게 처리할까요?

내가보고있는 특정 인스턴스는 SQL Server 데이터베이스를 사용하고 있습니다.

예, 저는 내부 동작에 대해 알고 있다는 것을 "알 필요가 없다"는 사실을 잘 알고 있습니다. DB 등에서 엉망이되어서는 안됩니다. 그들이 그것을 어떻게하고 있는지 알지 못한다! 누구든지 설명 할 수 있다면, 나는 감사 할 것입니다.

답변

2

SAPB1은 ONNM 테이블을 사용하여 새로운 고유 번호를 생성합니다. 문서가 추가되면 다음 작업이 수행됩니다.

  • SQL 트랜잭션은 다음 번호가 ONNM 테이블이 새 번호 (+1)로 업데이트됩니다 업데이트 잠금
  • 으로 ONNM 테이블에서 쿼리
  • 을 시작합니다.
  • 문서가 추가되었습니다.
  • SQL 트랜잭션이 커밋되었습니다.

업데이트 잠금을 사용하여 SQL SELECT 문을 실행하면 현재 행이 반환되고 동시에 트랜잭션이 끝날 때까지 해당 행이 잠 깁니다. 당신이 그것을 선택했을 때와 거래가 끝날 때 사이에 다른 사용자가 그 행을 바꿀 수 없다는 것을 보장합니다.

SAP 프로필러를 사용하여 SAP B1에서 작업을 수행 할 때 실행되는 문을 볼 수 있습니다. 다음은 인용문에서 사용할 다음 번호를 얻는 행입니다. 인용문은 ObjectType 23

SELECT T0이다. * DBO]에서. ONNM] WITH T0 (UPDLOCK) WHERE T0. 시퀀스 번호 생성 [목적 파일] = '23'

+0

이전 Jared을 수락하지 못해 죄송합니다. 어떻게 든이 답변을 본 적이 없었습니다. – Rob3C

+0

안녕하세요 Rob3C, 문제 없음 :) –

1

SAP의 B1 사용 ONNM.

등록 된 모든 개체에 대해 자동 키를 유지합니다. 자동 키 시퀀스 번호가 생성됩니다. 모든 추가 이벤트마다이 자동 키가 +1로 증가합니다.