Procedura: Richiesta di informazioni sulla colonna chiave full-text (Transact-SQL)
In genere, il risultato della funzione con valori del set di righe CONTAINSTABLE o FREETEXTTABLE deve essere unito in join alla tabella di base. In questi casi, è necessario conoscere il nome della colonna chiave univoca. È possibile verificare se un determinato indice univoco viene utilizzato come chiave full-text e ottenere l'identificatore della colonna chiave full-text.
Per verificare se un determinato indice univoco viene utilizzato come colonna chiave full-text
Utilizzare un'istruzione SELECT per chiamare la funzione INDEXPROPERTY. Nella chiamata alla funzione utilizzare la funzione OBJECT_ID per convertire il nome della tabella (nome_tabella) nell'ID corrispondente, specificare il nome di un indice univoco per la tabella, quindi specificare la proprietà di indice IsFulltextKey, come illustrato di seguito:
SELECT INDEXPROPERTY( OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey' );
L'istruzione restituisce 1 se l'indice viene utilizzato per applicare l'unicità della colonna chiave full-text e 0 in caso contrario.
Per ulteriori informazioni, vedere l'esempio A più avanti in questo argomento.
Per trovare l'identificatore della colonna chiave full-text
Ogni tabella full-text dispone di una colonna utilizzata per applicare righe univoche per la tabella (la colonna chiave univoca). La proprietà TableFulltextKeyColumn, ottenuta dalla funzione OBJECTPROPERTYEX contiene l'ID della colonna chiave univoca.
Per ottenere questo identificatore, è possibile utilizzare un'istruzione SELECT per chiamare la funzione OBJECTPROPERTYEX. Utilizzare la funzione OBJECT_ID per convertire il nome della tabella (nome_tabella) nell'ID corrispondente e specificare la proprietà TableFulltextKeyColumn, come illustrato di seguito:
SELECT OBJECTPROPERTYEX(OBJECT_ID( 'table_name'), 'TableFulltextKeyColumn' ) AS 'Column Identifier';
Per ulteriori informazioni, vedere l'esempio B. "Ottenere l'identificatore della colonna chiave full-text" e l'esempio C. Ottenere il nome della colonna chiave univoca" più avanti in questo argomento.
Esempio
In tutti gli esempi seguenti viene utilizzata la tabella Document del database AdventureWorks. Per informazioni su questa tabella, vedere Tabella Document (AdventureWorks).
A. Verificare se un determinato indice univoco viene utilizzato come colonna chiave full-text
Nell'esempio seguente viene illustrato come verificare se l'indice PK_Document_DocumentID viene utilizzato per applicare l'univocità della colonna chiave full-text:
USE AdventureWorks
GO
SELECT INDEXPROPERTY ( OBJECT_ID('Production.Document'), 'PK_Document_DocumentID', 'IsFulltextKey' )
In questo esempio viene restituito 1 se l'indice PK_Document_DocumentID viene utilizzato per applicare l'univocità della colonna chiave full-text. In caso contrario, viene restituito 0 o NULL. NULL indica che è in uso un nome di indice non valido, il nome dell'indice non corrisponde alla tabella, la tabella non esiste e così via.
B. Ottenere l'identificatore della colonna chiave full-text
Nell'esempio seguente viene restituito l'identificatore della colonna chiave full-text o NULL. NULL indica che è in uso un nome di indice non valido, il nome dell'indice non corrisponde alla tabella, la tabella non esiste e così via.
USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO
C. Ottenere il nome della colonna chiave univoca
Nell'esempio seguente viene illustrato come utilizzare l'identificatore della colonna chiave univoca per ottenere il nome corrispondente a livello di codice.
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
Nell'esempio viene restituita una colonna del set di risultati denominata Unique Key Columnin cui viene visualizzata una sola riga contenente il nome della colonna chiave univoca della tabella Document, DocumentID. Si noti che se questa query contenesse un nome di indice non valido, il nome di indice non corrispondesse alla tabella, la tabella non esistesse e così via, il risultato restituito sarebbe NULL.