sp_foreignkeys (Transact-SQL)

Si applica a:SQL Server

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

Convenzioni di 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 per il quale restituire informazioni sulla tabella. table_server è sysname, senza impostazione predefinita.

[ @pktab_name = ] 'pktab_name' Nome della tabella con una chiave primaria. pktab_name è sysname, con un valore predefinito NULL.

[ @pktab_schema = ] 'pktab_schema' Nome dello schema con una chiave primaria. pktab_schema è sysname, con valore predefinito NULL. In SQL Server questo contiene il nome del proprietario.

[ @pktab_catalog = ] 'pktab_catalog' Nome del catalogo con una chiave primaria. pktab_catalog è sysname, con valore predefinito NULL. In SQL Server questo contiene il nome del database.

[ @fktab_name = ] 'fktab_name' Nome della tabella con una chiave esterna. fktab_name è sysname, con valore predefinito NULL.

[ @fktab_schema = ] 'fktab_schema' Nome dello schema con una chiave esterna. fktab_schema è sysname, con valore predefinito NULL.

[ @fktab_catalog = ] 'fktab_catalog' Nome del catalogo con una chiave esterna. fktab_catalog è sysname, con valore predefinito NULL.

Valori del codice restituito

Nessuno

Set di risultati

Vari prodotti DBMS supportano la denominazione in tre parti per le tabelle (catalogo.schema.table), rappresentato 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 della colonna o delle colonne chiave primaria, per ogni colonna del TABLE_NAME restituito. 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 chiavi esterne, per ogni colonna della tabella TABLE_NAME restituita. Questo campo restituisce sempre un valore.
KEY_SEQ smallint Numero sequenziale della colonna in una chiave primaria a più colonne. Questo campo restituisce sempre 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 dati. SQL Server restituisce il nome del vincolo FOREIGN KEY.
PK_NAME sysname Identificatore della chiave primaria. NULL se non è applicabile all'origine 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:

sp_foreignkeys esegue una query sul set di righe FOREIGN_KEYS dell'interfaccia IDBSchemaRowset del provider OLE DB corrispondente a table_server. I parametri di table_name, table_schema, table_catalog e colonna vengono passati a questa interfaccia per limitare le righe restituite.

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 AdventureWorks2022 presente nel server collegato Seattle1.

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

Vedi anche

sp_catalogs (Transact-SQL)
sp_column_privileges (Transact-SQL)
sp_indexes (Transact-SQL)
sp_linkedservers (Transact-SQL)
sp_primarykeys (Transact-SQL)
sp_tables_ex (Transact-SQL)
sp_table_privileges (Transact-SQL)
Stored procedure di sistema (Transact-SQL)