자동 증분 키
대부분의 Adobe Campaign 테이블의 기본 키는 데이터베이스 엔진에서 자동으로 생성된 32비트 정수(Long)입니다. 키 값의 계산은 전체 데이터베이스에서 고유한 숫자를 생성하는 시퀀스(기본적으로 XtkNewId SQL 함수)에 따라 달라집니다. 키의 내용은 레코드 삽입 시 자동으로 입력됩니다.
증분 키의 장점은 테이블 간의 조인에 수정할 수 없는 기술 키를 제공한다는 것입니다. 또한 이 키는 2바이트 정수를 사용하므로 메모리를 많이 차지하지 않습니다.
소스 스키마에서 pkSequence 특성과 함께 사용할 시퀀스의 이름을 지정할 수 있습니다. 이 특성이 원본 스키마에 지정되어 있지 않으면 XtkNewId 기본 시퀀스가 사용됩니다. nms:broadLog 및 nms:trackingLog 스키마(NmsBroadLogId 및 NmsTrackingLogId)에 대해 전용 시퀀스를 사용합니다. 이 스키마는 가장 많은 레코드를 포함하는 테이블이기 때문입니다.
ACC 18.10에서 XtkNewId 은(는) 기본 제공 스키마에서 시퀀스에 대한 기본값이 아닙니다. 이제 전용 시퀀스로 스키마를 빌드하거나 기존 스키마를 확장할 수 있습니다.
Adobe Campaign 스키마에서 참조된 시퀀스(예: NmsTrackingLogId)는 매개 변수의 ID 수를 쉼표로 구분하여 반환하는 SQL 함수와 연결되어야 합니다. 이 함수를 GetNew XXX Ids 이라고 해야 합니다. 여기서 XXX 은(는) 시퀀스 이름입니다(예: GetNewNmsTrackingLogIds). datakit/nms/eng/sql/ 디렉터리에서 응용 프로그램과 함께 제공된 postgres-nms.sql, mssql-nms.sql 또는 oracle-nms.sql 파일을 확인하여 각 데이터베이스 엔진에 대한 'NmsTrackingLogId' 시퀀스 생성의 예를 복구하십시오.
고유 키를 선언하려면 데이터 스키마의 기본 요소에서 autopk 특성("true" 값 포함)을 채웁니다.
예:
소스 스키마에서 증분 키 선언:
<srcSchema name="recipient" namespace="cus">
<element name="recipient" autopk="true">
...
</element>
</srcSchema>
생성된 스키마:
<schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema">
<element name="recipient" autopk="true" pkSequence="XtkNewId" sqltable="CusRecipient">
<dbindex name="id" unique="true">
<keyfield xpath="@id"/>
</dbindex>
<key internal="true" name="id">
<keyfield xpath="@id"/>
</key>
<attribute desc="Internal primary key" label="Primary key" name="id" sqlname="iRecipientId" type="long"/>
</element>
</schema>
키 및 해당 인덱스의 정의 외에 자동 생성된 기본 키를 포함하기 위해 확장 스키마에 "id"라는 숫자 필드가 추가되었습니다.