sp_fkeys (Transact-SQL)

Si applica a:SQL ServerDatabase SQL diAzure Istanzagestita di SQL di Azure Azure Synapse AnalyticsPlatform System (PDW)Warehouse in Microsoft Fabric

Restituisce informazioni sulle chiavi esterne logiche per l'ambiente corrente. Questa procedura visualizza le relazioni di chiave esterna, incluse le chiavi esterne disabilitate.

Convenzioni di sintassi Transact-SQL

Sintassi

sp_fkeys [ @pktable_name = ] 'pktable_name'   
     [ , [ @pktable_owner = ] 'pktable_owner' ]   
     [ , [ @pktable_qualifier = ] 'pktable_qualifier' ]   
     { , [ @fktable_name = ] 'fktable_name' }   
     [ , [ @fktable_owner = ] 'fktable_owner' ]   
     [ , [ @fktable_qualifier = ] 'fktable_qualifier' ]  

Argomenti

[ @pktable_name=] 'pktable_name'
Nome della tabella, contenente la chiave primaria, utilizzata per restituire informazioni del catalogo. pktable_name è sysname, con valore predefinito NULL. I criteri di ricerca con caratteri jolly non sono supportati. Questo parametro o il parametro fktable_name , o entrambi, deve essere fornito.

[ @pktable_owner=] 'pktable_owner'
Nome del proprietario della tabella (con la chiave primaria) utilizzato per restituire informazioni sul catalogo. pktable_owner è sysname, con valore predefinito NULL. I criteri di ricerca con caratteri jolly non sono supportati. Se non viene specificato pktable_owner , si applicano le regole di visibilità della tabella predefinite del sistema DBMS sottostante.

In SQL Server, se l'utente corrente è proprietario di una tabella con il nome specificato, vengono restituite le colonne della tabella. Se pktable_owner non viene specificato e l'utente corrente non è proprietario di una tabella con il pktable_name specificato, la procedura cerca una tabella con il pktable_name specificato di proprietà del proprietario del database. Se viene individuata, vengono restituite le colonne di tale tabella.

[ @pktable_qualifier =] 'pktable_qualifier'
Nome del qualificatore della tabella contenente la chiave primaria. pktable_qualifier è sysname, con valore predefinito NULL. Vari prodotti DBMS supportano la denominazione in tre parti per le tabelle (qualifier.owner.name). In SQL Server il qualificatore rappresenta il nome del database. In altri prodotti rappresenta il nome del server dell'ambiente di database della tabella.

[ @fktable_name=] 'fktable_name'
Nome della tabella contenente una chiave esterna, utilizzata per restituire informazioni del catalogo. fktable_name è sysname, con valore predefinito NULL. I criteri di ricerca con caratteri jolly non sono supportati. Questo parametro o il parametro pktable_name , o entrambi, deve essere fornito.

[ @fktable_owner =] 'fktable_owner'
Nome del proprietario della tabella contenente la chiave esterna, utilizzata per restituire informazioni del catalogo. fktable_owner è sysname, con un valore predefinito NULL. I criteri di ricerca con caratteri jolly non sono supportati. Se fktable_owner non viene specificato, si applicano le regole di visibilità della tabella predefinite del sistema DBMS sottostante.

In SQL Server, se l'utente corrente è proprietario di una tabella con il nome specificato, vengono restituite le colonne della tabella. Se non viene specificato fktable_owner e l'utente corrente non possiede una tabella con il fktable_name specificato, la routine cerca una tabella con il fktable_name specificato di proprietà del proprietario del database. Se viene individuata, vengono restituite le colonne di tale tabella.

[ @fktable_qualifier= ] 'fktable_qualifier'
Nome del qualificatore della tabella contenente una chiave esterna. fktable_qualifier è sysname, con valore predefinito NULL. In SQL Server il qualificatore rappresenta il nome del database. In altri prodotti rappresenta il nome del server dell'ambiente di database della tabella.

Valori del codice restituito

Nessuno

Set di risultati

Nome colonna Tipo di dati Descrizione
PKTABLE_QUALIFIER sysname Nome del qualificatore della tabella contenente la chiave primaria. Questo campo può essere NULL.
PKTABLE_OWNER sysname Nome del proprietario della tabella contenente la chiave primaria. Questo campo restituisce sempre un valore.
PKTABLE_NAME sysname Nome della tabella contenente la chiave primaria. Questo campo restituisce sempre un valore.
PKCOLUMN_NAME sysname Nome delle colonne chiave primaria, per ogni colonna della tabella TABLE_NAME restituita. Questo campo restituisce sempre un valore.
FKTABLE_QUALIFIER sysname Nome del qualificatore della tabella contenente una chiave esterna. Questo campo può essere NULL.
FKTABLE_OWNER sysname Nome del proprietario della tabella contenente una chiave esterna. Questo campo restituisce sempre un valore.
FKTABLE_NAME sysname Nome della tabella contenente una chiave esterna. Questo campo restituisce sempre un valore.
FKCOLUMN_NAME sysname Nome della colonna chiave esterna, 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. Valori possibili:
0 = modifiche di tipo CASCADE alla chiave esterna.
1 = modifiche di tipo NO ACTION se la chiave esterna è presente.
2 = set null
3 = impostazione predefinita
DELETE_RULE smallint Azione applicata alla chiave esterna quando l'operazione SQL è un'operazione di eliminazione. Valori possibili:
0 = modifiche di tipo CASCADE alla chiave esterna.
1 = modifiche di tipo NO ACTION se la chiave esterna è presente.
2 = set null
3 = impostazione predefinita
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.

I risultati restituiti vengono ordinati in base a FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME e KEY_SEQ.

Osservazioni:

È possibile implementare codice di applicazione che include tabelle con chiavi esterne disabilitate nei modi seguenti:

  • Disabilitazione temporanea del controllo dei vincoli ALTER TABLE NOCHECK o CREATE TABLE NOT FOR REPLICATION mentre si utilizzano le tabelle e successiva riabilitazione del controllo.

  • Utilizzo di trigger o codice di applicazione per l'imposizione di relazioni.

Se viene specificato il nome della tabella della chiave primaria e il nome della tabella della chiave esterna è NULL, sp_fkeys restituisce tutte le tabelle contenenti una chiave esterna per la tabella specificata. Se viene specificato il nome della tabella della chiave esterna e il nome della tabella della chiave primaria è NULL, sp_fkeys restituisce tutte le tabelle correlate tramite una relazione tra chiave primaria e chiave esterna per le chiavi esterne della tabella della chiave esterna.

La stored procedure sp_fkeys equivale a SQLForeignKeys in ODBC.

Autorizzazioni

È richiesta SELECT l'autorizzazione per lo schema.

Esempi

Nell'esempio seguente viene recuperato un elenco delle chiavi esterne per la tabella HumanResources.Department nel database AdventureWorks2022.

USE AdventureWorks2022;  
GO  
EXEC sp_fkeys @pktable_name = N'Department'  
    ,@pktable_owner = N'HumanResources';  

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

Nell'esempio seguente viene recuperato un elenco delle chiavi esterne per la tabella DimDate nel database AdventureWorksPDW2012. Non vengono restituite righe perché Azure Synapse Analytics non supporta chiavi esterne.

EXEC sp_fkeys @pktable_name = N'DimDate';  

Vedi anche

Stored procedure del catalogo (Transact-SQL)
Stored procedure di sistema (Transact-SQL)
sp_pkeys (Transact-SQL)