Automatische incrementele toets

De primaire sleutel van de meeste Adobe Campaign-tabellen is een 32-bits lang geheel getal dat automatisch wordt gegenereerd door de database-engine. De berekening van de zeer belangrijke waarde hangt van een opeenvolging (door gebrek, de SQL functie 0} XtkNewId {af) die een aantal produceert dat in het volledige gegevensbestand uniek is. De inhoud van de toets wordt automatisch ingevoerd bij het invoegen van de record.

Het voordeel van een stijgende sleutel is dat het een niet wijzigbare technische sleutel voor de verbindingen tussen lijsten verstrekt. Bovendien neemt deze sleutel niet veel geheugen in beslag omdat er een dubbel-byte geheel getal wordt gebruikt.

U kunt in het bronschema de naam van de opeenvolging specificeren die met het pkSequence attribuut moet worden gebruikt. Als dit attribuut niet in het bronschema wordt gegeven, zal de XtkNewId standaardopeenvolging worden gebruikt. De toepassing gebruikt specifieke opeenvolgingen voor nms:wideLog en nms:trackingLog schema's (NmsBroadLogId en NmsTrackingLogId respectievelijk) omdat dit de lijsten zijn die de meeste verslagen bevatten.

Van ACC 18.10, XtkNewId is niet meer de standaardwaarde voor de opeenvolging in uit-van-de-doosschema's. U kunt nu schema bouwen of bestaand schema met een specifieke opeenvolging uitbreiden.

IMPORTANT
Wanneer het creëren van een nieuw schema of tijdens een schemauitbreiding, moet u de zelfde primaire zeer belangrijke opeenvolgingswaarde (@pkSequence) voor het volledige schema houden.

Een opeenvolging die in een schema van Adobe Campaign wordt van verwijzingen voorzien (NmsTrackingLogId bijvoorbeeld) moet met een SQL functie worden geassocieerd die het aantal IDs in de parameters terugkeert, die door komma's wordt gescheiden. Deze functie moet worden geroepen GetNew Ids , waar XXX de naam van de opeenvolging is ( GetNewNmsTrackingLogIds bijvoorbeeld). Bekijk postgres-nms.sql, mssql-nms.sql of oracle-nms.sql dossiers die van de toepassing in worden voorzien datakit/nms/eng/sql/ folder om het voorbeeld van een opeenvolging NmsTrackingLogId"voor elk terug te krijgen database-engine.

Om een unieke sleutel te verklaren, bevolk het automatische attribuut (met waarde "waar") op het belangrijkste element van het gegevensschema.

Voorbeeld:

Een incrementele sleutel in het bronschema declareren:

<srcSchema name="recipient" namespace="cus">
  <element name="recipient" autopk="true">
  ...
  </element>
</srcSchema>

Het gegenereerde schema:

<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>

Naast de definitie van de sleutel en zijn index, is een numeriek gebied genoemd "id"toegevoegd aan het uitgebreide schema om de auto-geproduceerde primaire sleutel te bevatten.

IMPORTANT
Bij het maken van de tabel wordt automatisch een record met de primaire sleutel ingesteld op 0 ingevoegd. Deze record wordt gebruikt om buitenste verbindingen te voorkomen, die niet effectief zijn op volumetabellen. Door gebrek, worden alle buitenlandse sleutels geïnitialiseerd met waarde 0 zodat een resultaat altijd kan zijn teruggekeerd op de verbinding wanneer het gegevenspunt niet bevolkt is.