Ajout ou suppression de champs indexés
Les champs indexés sont utilisés pour optimiser la recherche dans la base de données. Ils sont définis comme une contrainte sur la colonne associée dans la table de base de données. Les index uniques et composites sont pris en charge.
Ajout d'un champ indexé
Pour ajouter un champ indexé à une table de base de données existante :
1. Créez un nouveau bloc de construction qui s'étend du bloc de construction PTC contenant le gestionnaire de l'entité associée jusqu'à la table de base de données. Ces gestionnaires sont spécifiés dans le tableau DefaultGlobalManagerConfiguration de la page Configuration de l'objet PTC.Base.Manager. Par exemple, pour ajouter une clé indexée à un ordre de travail, accédez à l'objet PTC.JobOrderImpl.Manager.
Pour plus d'informations, consultez la rubrique Créer un nouveau bloc de construction.
2. Accédez à l'objet de gestionnaire de votre nouveau bloc de construction.
3. Sous Services, recherchez et remplacez le service GetDBInfo pour l'entité à laquelle vous ajoutez le champ indexé. Par exemple, pour ajouter un champ indexé à la table de base de données pour les ordres de travail, recherchez et remplacez le service GetJobOrderDBInfo.
4. Dans l'éditeur de script, faites défiler vers le bas jusqu'à l'entrée correspondant à la forme de données à laquelle vous souhaitez ajouter le champ indexé.
5. Ajoutez un tableau indexedFields pour la forme de données, avec les propriétés suivantes :
unique : permet de spécifier si la colonne doit avoir une valeur unique.
fieldnames : tableau contenant les noms des colonnes. Si une seule colonne est spécifiée, un index unique est créé. Si plusieurs colonnes sont spécifiées, un index composite est créé.
* 
Un index unique peut être créé en spécifiant name avec une valeur unique qui est le nom de la colonne, au lieu de spécifier une valeur unique pour fieldnames. Si name et fieldnames sont spécifiés, name est ignoré et l'index est créé à l'aide des valeurs fieldnames.
identifier : nom de l'entité dans la base de données. Si cette valeur n'est pas spécifiée, le système la génère automatiquement au format <nom_de_table>_<nom_de_colonne1>_<nom_de_colonne2>_<nom_de_colonneN>_idx. Si cette valeur est spécifiée, elle doit être unique pour les valeurs spécifiées et pour toutes les valeurs générées automatiquement. La longueur maximale autorisée pour la valeur est celle autorisée par la base de données pour les identificateurs.
6. Cliquez sur Enregistrer pour enregistrer les modifications apportées au service.
7. Accédez à l'objet PTC.DBConnection.Manager.
8. Synchroniser les informations de base de données avec le schéma de base de données. Pour plus d'informations, consultez la rubrique Synchronisation des informations et du schéma de base de données.
Suppression d'un champ indexé
Pour supprimer un champ indexé :
* 
Ne supprimez pas les champs indexés qui sont définis en standard. Supprimez uniquement les champs indexés que vous avez ajoutés précédemment, par exemple lors des opérations Ajout de propriétés personnalisées à des entités de modèle de données ou Ajout d'entités personnalisées au modèle de données.
1. Créez un nouveau bloc de construction qui s'étend du bloc de construction PTC contenant le gestionnaire de l'entité associée jusqu'à la table de base de données. Ces gestionnaires sont spécifiés dans le tableau DefaultGlobalManagerConfiguration de la page Configuration de l'objet PTC.Base.Manager. Par exemple, pour supprimer un champ indexé d'un ordre de travail, accédez à l'objet PTC.JobOrderImpl.Manager.
Pour plus d'informations, consultez la rubrique Créer un nouveau bloc de construction.
2. Accédez à l'objet de base de données configuré pour votre système, par exemple PTC.DBConnection.MSSQLDatabase.
3. Sous Services, exécutez le service RemoveIndex avec les entrées suivantes :
dataShapeName : forme de données de la table de base de données à partir de laquelle vous supprimez la contrainte de champ indexé. Obligatoire.
fieldName : champ de la forme de données de laquelle vous supprimez la contrainte de champ indexé. Cette entrée n'est requise que lors de la suppression d'un champ indexé unique.
dbInfo : description JSON de la contrainte de champ indexé à supprimer. Vous devez fournir les mêmes informations de identifier (le cas échéant) et name que celles spécifiées dans le service GetDBInfo où le champ indexé est défini. Cette entrée est requise lors de la suppression d'un index composite.
4. Cliquez sur Exécuter.
5. Accédez au service GetDBInfo où le champ indexé est défini, puis supprimez la définition de champ indexé des services. Si ce n'est pas le cas, le champ indexé est rajouté à la base de données lors de la prochaine exécution des services de synchronisation.
Par exemple, pour supprimer une contrainte de champ indexé avec un identifier spécifié d'un champ nommé WorkDefinitionUID sur la forme de données MyObject, spécifiez les paramètres d'entrée suivants :
dataShapeName : MyObject
fieldName : WorkDefinitionUID
dbInfo :
{
"identifier":"myobject_workdefinitionuid_idx"
"name":"WorkDefinitionUID",
}
Est-ce que cela a été utile ?