Cómo consultar sobre la columna de clave de texto completo (Transact-SQL)

Normalmente, el resultado de las funciones de valores de conjunto de filas CONTAINSTABLE o FREETEXTTABLE tiene que combinarse con la tabla base. En casos como éste, necesita conocer el nombre de la columna de clave única. Puede consultar si un índice único determinado se utiliza como clave de texto completo y obtener el identificador de la columna de clave de texto completo.

Para consultar si un índice único determinado se utiliza como columna de clave de texto completo

  • Utilice una instrucción SELECT para llamar a la función INDEXPROPERTY. En la llamada a la función, use la función OBJECT_ID para convertir el nombre de la tabla (nombre_de_tabla) en el identificador de tabla, especifique el nombre de un índice único para la tabla y especifique la propiedad del índice IsFulltextKey como sigue:

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

    Esta instrucción devuelve el valor 1 si el índice se utiliza para exigir la exclusividad de la columna de clave de texto completo; de lo contrario, se devuelve 0.

    Para obtener más información, vea el ejemplo A más adelante en este tema.

Para buscar el identificador de la columna de clave de texto completo

  • Todas las tablas habilitadas para texto completo tienen una columna que se utiliza para aplicar las filas únicas de la tabla (columna de clave única). La propiedad TableFulltextKeyColumn obtenida mediante la función OBJECTPROPERTY proporciona la identidad de esta columna de clave única.

    Para obtener este identificador, puede utilizar una instrucción SELECT con el fin de llamar a la función OBJECTPROPERTYEX. Utilice la función OBJECT_ID para convertir el nombre de la tabla (nombre_de_tabla) en el identificador de tabla y especificar la propiedad TableFulltextKeyColumn como sigue:

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

    Para obtener más información, vea los ejemplos "B. Obtener el identificador de la columna de clave de texto completo" y "C. Obtener el nombre de columna de clave única", posteriormente en este tema.

Ejemplo

Todos los ejemplos siguientes usan la tabla Document de la base de datos AdventureWorks. Para obtener información sobre esta tabla, vea Tabla Document (AdventureWorks).

A. Consultar si un índice determinado se utiliza como columna de clave de texto completo

El ejemplo siguiente consulta si el índice PK_Document_DocumentID se utiliza para exigir la exclusividad de la columna de clave de texto completo como sigue:

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

Este ejemplo devuelve 1 si el índice PK_Document_DocumentID se utiliza para exigir la exclusividad de la columna de clave de texto completo. De lo contrario, devuelve 0 o NULL. NULL implica que está utilizando un nombre de índice no válido, el nombre de índice no corresponde a la tabla, la tabla no existe, etcétera.

B. Obtener el identificador de la columna de clave de texto completo

En el ejemplo siguiente se devuelve el identificador de la columna de clave de texto completo o NULL. NULL implica que está utilizando un nombre de índice no válido, el nombre de índice no corresponde a la tabla, la tabla no existe, etcétera.

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

C. Identificar el nombre de la columna de clave única

En el ejemplo siguiente se muestra cómo utilizar el identificador de la columna de clave única para obtener su nombre mediante programación.

USE AdventureWorks;
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

Este ejemplo devuelve una columna de conjunto de resultados denominada Unique Key Column, que muestra una única fila que contiene el nombre de la columna de clave única de la tabla Document, DocumentID. Tenga en cuenta que, si esta consulta contuviera un nombre de índice no válido, el nombre del índice no correspondiera a la tabla, la tabla no existiera, etc., devolvería NULL.