Indizierte Felder hinzufügen oder entfernen
Indizierte Felder werden verwendet, um die Suche in der Datenbank zu optimieren. Sie werden als Beschränkung für die zugehörige Spalte in der Datenbanktabelle definiert. Sowohl einzelne als auch zusammengesetzte Indizes werden unterstützt.
Indiziertes Feld hinzufügen
So fügen Sie einer vorhandenen Datenbanktabelle ein indiziertes Feld hinzu:
1. Erstellen Sie einen neuen Baustein, der den PTC Baustein erweitert, der den Manager für die Entität enthält, die mit der Datenbanktabelle verknüpft ist. Diese Manager sind in der Tabelle DefaultGlobalManagerConfiguration auf der Seite Konfiguration des Dings PTC.Base.Manager angegeben. Navigieren Sie zum Ding PTC.JobOrderImpl.Manager, um beispielsweise einen indizierten Schlüssel zu einem Projektauftrag hinzuzufügen.
2. Navigieren Sie zum Manager-Ding für Ihren neuen Baustein.
3. Suchen Sie unter Dienste den Dienst GetDBInfo für die Entität, der Sie das indizierte Feld hinzufügen möchten, und überschreiben Sie ihn. Um z.B. ein indiziertes Feld einer Datenbanktabelle hinzuzufügen, suchen Sie den Dienst GetJobOrderDBInfo und überschreiben Sie ihn.
4. Scrollen Sie im Skripteditor nach unten zu dem Eintrag für den Data Shape, dem Sie das indizierte Feld hinzufügen möchten.
5. Fügen Sie für den Data Shape ein Array indexedFields mit den folgenden Eigenschaften hinzu:
◦ unique – Angabe, ob die Spalte einen eindeutigen Wert aufweisen muss.
◦ fieldnames – Array, das die Namen der Spalten enthält. Wenn nur eine Spalte angegeben wird, wird ein einzelner Index erstellt. Wenn mehrere Spalten angegeben werden, wird ein zusammengesetzter Index erstellt.
|
Ein einzelner Index kann erstellt werden, indem name mit einem einzelnen Wert angegeben wird, der der Name der Spalte ist, anstatt einen einzelnen Wert für fieldnames anzugeben. Wenn sowohl name als auch fieldnames angegeben werden, wird name ignoriert, und der Index wird mit den Werten für fieldnames erstellt.
|
◦ identifier – Der Name der Entität in der Datenbank. Wenn kein Name festgelegt wird, generiert das System den Wert automatisch im Format <Tabellenname>_<Spaltenname1>_<Spaltenname2>_<SpaltennameN>_idx. Wenn der Name festgelegt wird, muss dieser sowohl für festgelegte Werte als auch für alle automatisch generierten Werte eindeutig sein. Die maximale Länge für den Wert entspricht der in der Datenbank zulässigen maximalen Länge von IDs.
6. Klicken Sie auf Speichern, um die Änderungen an dem Dienst zu speichern.
Indiziertes Feld entfernen
So entfernen Sie ein indiziertes Feld:
1. Erstellen Sie einen neuen Baustein, der den PTC Baustein erweitert, der den Manager für die Entität enthält, die mit der Datenbanktabelle verknüpft ist. Diese Manager sind in der Tabelle DefaultGlobalManagerConfiguration auf der Seite Konfiguration des Dings PTC.Base.Manager angegeben. Navigieren Sie zum Ding PTC.JobOrderImpl.Manager, um beispielsweise ein indiziertes Feld aus einem Projektauftrag zu entfernen.
2. Navigieren Sie zum Datenbankding, welches für Ihr System konfiguriert ist, z.B. PTC.DBConnection.MSSQLDatabase.
3. Führen Sie unter Dienste den Dienst RemoveIndex mit den folgenden Eingaben aus:
◦ dataShapeName – Der Data Shape für die Datenbanktabelle, aus der Sie die Beschränkung für das indizierte Feld entfernen Erforderlich.
◦ fieldName – Das Feld auf dem Data Shape, auf dem Sie die Beschränkung für das indizierte Feld entfernen Diese Eingabe ist nur erforderlich, wenn ein einzelnes indiziertes Feld entfernt wird.
◦ dbInfo – Die JSON-Beschreibung der zu entfernenden Beschränkung für das indizierte Feld. Es müssen dieselben Informationen für identifier (falls erforderlich) und name angegeben werden, die im Dienst GetDBInfo, in dem das indizierte Feld definiert ist, angegeben sind. Diese Eingabe ist erforderlich, wenn ein zusammengesetzter Index entfernt wird.
4. Klicken Sie auf Ausführen.
5. Navigieren Sie zum Dienst
GetDBInfo, in dem das indizierte Feld definiert ist, und entfernen Sie die Definition des indizierten Felds aus den Diensten. Wird die Definition nicht entfernt, wird das indizierte Feld der Datenbank bei der nächsten
Ausführung der Synchronisationsdienste wieder hinzugefügt.
Beispiel: Geben Sie die folgenden Eingabeparameter an, um eine Beschränkung für ein indiziertes Feld mit Angabe von identifier aus einem Feld mit dem Namen WorkDefinitionUID auf dem Data Shape MyObject zu entfernen:
• dataShapeName – MyObject
• fieldName – WorkDefinitionUID
• dbInfo –
{
"identifier":"myobject_workdefinitionuid_idx"
"name":"WorkDefinitionUID",
}