スキーマでのキー管理 management-of-keys

データスキーマに関連付けられた各テーブルには、テーブル内のレコードを識別するためのキーが少なくとも 1 つ必要です。 このページでは、Campaign Classic v7 テーブルで使用される自動インクリメンタルキーについて説明します。

Campaign v7 から v8 への移行の一環として、Campaign Classic のドキュメントセットを効率化および再編成しました。 共通機能は、Campaign v8 ドキュメントセットでのみ使用できるようになりました。 キー管理について詳しくは、Campaign v8 ドキュメント ​を参照してください。

画像

自動インクリメンタルキー auto-incremental-key

ほとんどのAdobe Campaign テーブルの主キーは、データベースエンジンによって自動生成される32 ビットの長い整数です。 キー値の計算は、データベース全体で一意の数値を生成するシーケンス(デフォルトでは​XtkNewId SQL関数)によって異なります。 キーの内容は、レコードの挿入時に自動的に入力されます。

増分キーの利点は、テーブル間の結合に変更不可能なテクニカルキーを提供できることです。 さらに、このキーは2 バイトの整数を使用するため、メモリをあまり消費しません。

ソーススキーマで、pkSequence​属性で使用するシーケンスの名前を指定できます。 この属性がソーススキーマで指定されていない場合、XtkNewId​のデフォルトシーケンスが使用されます。 このアプリケーションは、最も多くのレコードを含むテーブルであるため、nms:broadLog​および​nms:trackingLog スキーマ (NmsBroadLogId​および​NmsTrackingLogId)に専用シーケンスを使用します。

ACC 18.10以降、XtkNewId​は、標準スキーマのシーケンスのデフォルト値ではなくなりました。 専用のシーケンスを使用して、スキーマを構築したり、既存のスキーマを拡張したりできるようになりました。

IMPORTANT
スキーマを新しく作成するときや、スキーマを拡張するときは、スキーマ全体で同じプライマリキーのシーケンス値(@pkSequence)を保持する必要があります。

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」という数値フィールドが拡張スキーマに追加されました。

IMPORTANT
プライマリキーが 0 に設定されたレコードは、テーブルの作成時に自動的に挿入されます。 このレコードは、外部結合を避けるために使用されます。外部結合はボリュームテーブルでは有効ではありません。 デフォルトでは、外部キーはすべて値 0 で初期化されるので、データ項目が入力されていない場合でも常に、結合時に結果を返します。

詳細情報

詳細については、次のリンクを参照してください。

recommendation-more-help
campaign-classic-help