Procédure : obtenir des informations sur la colonne de clés de texte intégral (Transact-SQL)

En général, le résultat des fonctions d'ensemble de lignes CONTAINSTABLE ou FREETEXTTABLE doit être joint avec la table de base. Dans ce cas-là, vous devez connaître le nom de la colonne clé unique. Vous pouvez déterminer si un index unique donné est utilisé comme clé de texte intégral et obtenir l'identificateur de la colonne de clés de texte intégral.

Pour déterminer si un index unique donné est utilisé comme colonne de clés de texte intégral

  • Utilisez une instruction SELECT pour appeler la fonction INDEXPROPERTY. Lors de l'appel de fonction, utilisez la fonction OBJECT_ID pour convertir le nom de la table (nom_table) en ID de table, spécifiez le nom d'un index unique pour la table et indiquez la propriété d'index IsFulltextKey, comme suit :

    SELECT INDEXPROPERTY( OBJECT_ID('table_name'), 'index_name',  'IsFulltextKey' );
    

    L'instruction retourne la valeur 1 si l'index est utilisé pour garantir l'unicité de la colonne de clés de texte intégral, et la valeur 0 dans le cas contraire.

    Pour plus d'informations, consultez l'exemple A, présenté ultérieurement dans cette rubrique.

Pour rechercher l'identificateur de la colonne de clés de texte intégral

  • Chaque table activée pour la recherche en texte intégral comporte une colonne qui est utilisée pour garantir l'unicité des lignes de la table (colonne cléunique). La propriété TableFulltextKeyColumn, obtenue à l'aide de la fonction OBJECTPROPERTYEX, contient l'ID de colonne de la colonne clé unique.

    Pour obtenir cet identificateur, vous pouvez utiliser une instruction SELECT afin d'appeler la fonction OBJECTPROPERTYEX. Utilisez la fonction OBJECT_ID pour convertir le nom de la table (nom_table) en ID de table, et spécifiez la propriété TableFulltextKeyColumn, comme suit :

    SELECT OBJECTPROPERTYEX(OBJECT_ID( 'table_name'), 'TableFulltextKeyColumn' ) AS 'Column Identifier';
    

    Pour plus d'informations, consultez l'exemple « B. Obtention de l'identificateur de la colonne de clés de texte intégral » et l'exemple « C. Obtention du nom de la colonne clé unique », présentés ultérieurement dans cette rubrique.

Exemple

Les exemples ci-après utilisent tous la table Document de la base de données AdventureWorks2008R2.

A. Déterminer si un index donné est utilisé comme colonne de clés de texte intégral

L'exemple suivant permet de déterminer si l'index PK_Document_DocumentID est utilisé pour garantir l'unicité de la colonne de clés de texte intégral, comme suit :

USE AdventureWorks2008R2;
GO
SELECT INDEXPROPERTY ( OBJECT_ID('Production.Document'), 'PK_Document_DocumentID',  'IsFulltextKey' )

Cet exemple retourne la valeur 1 si l'index PK_Document_DocumentID est utilisé pour garantir l'unicité de la colonne de clés de texte intégral. Si tel n'est pas le cas, la valeur 0 ou une valeur Null est retournée. La valeur Null signifie que vous utilisez un nom d'index non valide, que le nom d'index ne correspond pas à la table, que la table n'existe pas, etc.

B. Obtention de l'identificateur de la colonne de clés de texte intégral

L'exemple ci-après retourne l'identificateur de la colonne de clés de texte intégral ou une valeur Null. La valeur Null signifie que vous utilisez un nom d'index non valide, que le nom d'index ne correspond pas à la table, que la table n'existe pas, etc.

USE AdventureWorks2008R2;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO

C. Obtention du nom de la colonne clé unique

L'exemple ci-après explique comment utiliser l'identificateur de la colonne clé unique pour obtenir son nom par programmation.

USE AdventureWorks2008R2;
GO
DECLARE @key_column sysname;
SET @key_column = Col_Name(Object_Id('Production.Document'),
ObjectProperty(Object_id('Production.Document'),
'TableFulltextKeyColumn') 
);
SELECT @key_column AS 'Unique Key Column';
GO

Cet exemple retourne une colonne de jeu de résultats appelée Unique Key Column, qui contient une seule ligne indiquant le nom de la colonne clé unique de la table Document, DocumentID. Notez que si cette requête contenait un nom d'index non valide, si le nom d'index ne correspondait pas à la table, si la table n'existait pas, etc., une valeur Null serait retournée.