sp_foreignkeys (Transact-SQL)

Restituisce le chiavi esterne che fanno riferimento alle chiavi primarie nella tabella del server collegato.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_foreignkeys [ @table_server = ] 'table_server' 
     [ , [ @pktab_name = ] 'pktab_name' ] 
     [ , [ @pktab_schema = ] 'pktab_schema' ] 
     [ , [ @pktab_catalog = ] 'pktab_catalog' ] 
     [ , [ @fktab_name = ] 'fktab_name' ] 
     [ , [ @fktab_schema = ] 'fktab_schema' ] 
     [ , [ @fktab_catalog = ] 'fktab_catalog' ]

Argomenti

  • [ @table_server = ] 'table_server'
    Nome del server collegato di cui si desidera ottenere informazioni di tabella. table_server è di tipo sysname e non prevede alcun valore predefinito.

  • [ @pktab_name = ] 'pktab_name'
    Nome della tabella contenente una chiave primaria. pktab_name è di tipo sysname e il valore predefinito è NULL.

  • [ @pktab_schema = ] 'pktab_schema'
    Nome dello schema contenente una chiave primaria. pktab_schemaè di tipo sysname e il valore predefinito è NULL. In SQL Server 2008 contiene il nome del proprietario.

  • [ @pktab_catalog = ] 'pktab_catalog'
    Nome del catalogo contenente una chiave primaria. pktab_catalogè di tipo sysname e il valore predefinito è NULL. In SQL Server contiene il nome del database.

  • [ @fktab_name = ] 'fktab_name'
    Nome della tabella contenente una chiave esterna. fktab_nameè di tipo sysname e il valore predefinito è NULL.

  • [ @fktab_schema = ] 'fktab_schema'
    Nome dello schema contenente una chiave esterna. fktab_schemaè di tipo sysname e il valore predefinito è NULL.

  • [ @fktab_catalog = ] 'fktab_catalog'
    Nome del catalogo contenente una chiave esterna. fktab_catalogè di tipo sysname e il valore predefinito è NULL.

Valori restituiti

Nessuno

Set di risultati

Vari prodotti DBMS supportano i nomi di tabella composti da tre parti (catalogo**.schema.**tabella), adottati nel set di risultati.

Nome colonna

Tipo di dati

Descrizione

PKTABLE_CAT

sysname

Catalogo della tabella contenente la chiave primaria.

PKTABLE_SCHEM

sysname

Schema della tabella contenente la chiave primaria.

PKTABLE_NAME

sysname

Nome della tabella contenente la chiave primaria. Questo campo restituisce sempre un valore.

PKCOLUMN_NAME

sysname

Nome delle colonne della chiave primaria, per ogni colonna della tabella TABLE_NAME restituita. Questo campo restituisce sempre un valore.

FKTABLE_CAT

sysname

Catalogo della tabella contenente la chiave esterna.

FKTABLE_SCHEM

sysname

Schema della tabella contenente la chiave esterna.

FKTABLE_NAME

sysname

Nome della tabella contenente una chiave esterna. Questo campo restituisce sempre un valore.

FKCOLUMN_NAME

sysname

Nome delle colonne della chiave esterna, per ogni colonna della tabella TABLE_NAME restituita. Questo campo restituisce sempre un valore.

KEY_SEQ

smallint

Numero di sequenza della colonna in una chiave primaria a più colonne. In questo campo viene sempre restituito un valore.

UPDATE_RULE

smallint

Azione applicata alla chiave esterna quando l'operazione SQL è un aggiornamento. SQL Server restituisce 0, 1 o 2 per queste colonne:

0 = modifiche di tipo CASCADE alla chiave esterna.

1 = modifiche di tipo NO ACTION se la chiave esterna è presente.

2 = SET_NULL; la chiave esterna viene impostata su NULL.

DELETE_RULE

smallint

Azione applicata alla chiave esterna quando l'operazione SQL è un'operazione di eliminazione. SQL Server restituisce 0, 1 o 2 per queste colonne:

0 = modifiche di tipo CASCADE alla chiave esterna.

1 = modifiche di tipo NO ACTION se la chiave esterna è presente.

2 = SET_NULL; la chiave esterna viene impostata su NULL.

FK_NAME

sysname

Identificatore della chiave esterna. NULL se non è applicabile all'origine dei dati. SQL Server restituisce il nome del vincolo FOREIGN KEY.

PK_NAME

sysname

Identificatore della chiave primaria. NULL se non è applicabile all'origine dei dati. SQL Server restituisce il nome del vincolo PRIMARY KEY.

DEFERRABILITY

smallint

Indica se è possibile posticipare il controllo dei vincoli.

Nel set di risultati le colonne FK_NAME e PK_NAME restituiscono sempre NULL.

Osservazioni

La stored procedure sp_foreignkeys esegue una query nel set di righe FOREIGN_KEYS dell'interfaccia IDBSchemaRowset del provider OLE DB corrispondente a table_server. I parametri table_name, table_schema, table_catalog e column vengono passati a questa interfaccia per limitare il numero di righe restituito.

Autorizzazioni

È richiesta l'autorizzazione SELECT per lo schema.

Esempi

Nell'esempio seguente vengono restituite informazioni relative alla chiave esterna per la tabella Department del database AdventureWorks2008R2 presente nel server collegato Seattle1.

EXEC sp_foreignkeys @table_server = N'Seattle1', 
   @pktab_name = N'Department', 
   @pktab_catalog = N'AdventureWorks2008R2';