Condividi tramite


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 relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @table_server = ] N'table_server'

Nome del server collegato per il quale restituire informazioni sulla tabella. @table_server è sysname, senza impostazione predefinita.

[ @pktab_name = ] N'pktab_name'

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

[ @pktab_schema = ] N'pktab_schema'

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

[ @pktab_catalog = ] N'pktab_catalog'

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

[ @fktab_name = ] N'fktab_name'

Nome della tabella con una chiave esterna. @fktab_name è sysname, con un valore predefinito .NULL

[ @fktab_schema = ] N'fktab_schema'

Nome dello schema con una chiave esterna. @fktab_schema è sysname, con un valore predefinito .NULL

[ @fktab_catalog = ] N'fktab_catalog'

Nome del catalogo con una chiave esterna.@fktab_catalog è sysname, con un valore predefinito .NULL

Valori del codice restituito

Nessuno.

Set di risultati

Vari prodotti DBMS (Database Management System) supportano la denominazione in tre parti per le tabelle (<catalog>.<schema>.<table>), rappresentate 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 dell'oggetto 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 chiave esterna, per ogni colonna dell'oggetto TABLE_NAME restituito. 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 = CASCADE modifiche alla chiave esterna.
1 = NO ACTION cambia se la chiave esterna è presente.
2 = SET_NULL; impostare la chiave esterna 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 = CASCADE modifiche alla chiave esterna.
1 = NO ACTION cambia se la chiave esterna è presente.
2 = SET_NULL; impostare la chiave esterna su NULL.
FK_NAME sysname Identificatore della chiave esterna. È NULL se non applicabile all'origine dati. SQL Server restituisce il nome del FOREIGN KEY vincolo.
PK_NAME sysname Identificatore della chiave primaria. È NULL se non applicabile all'origine dati. SQL Server restituisce il nome del PRIMARY KEY vincolo.
DEFERRABILITY smallint Indica se è possibile posticipare il controllo dei vincoli.

Nel set di risultati le FK_NAME colonne e PK_NAME restituiscono NULLsempre .

Osservazioni:

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

Autorizzazioni

È richiesta SELECT l'autorizzazione 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';