sp_fkeys (Transact-SQL)
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Analytics Platform 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 relative alla sintassi Transact-SQL
Sintassi
sp_fkeys
[ [ @pktable_name = ] N'pktable_name' ]
[ , [ @pktable_owner = ] N'pktable_owner' ]
[ , [ @pktable_qualifier = ] N'pktable_qualifier' ]
[ , [ @fktable_name = ] N'fktable_name' ]
[ , [ @fktable_owner = ] N'fktable_owner' ]
[ , [ @fktable_qualifier = ] N'fktable_qualifier' ]
[ ; ]
Argomenti
[ @pktable_name = ] N'pktable_name'
Nome della tabella, con la chiave primaria, utilizzata per restituire informazioni sul catalogo. @pktable_name è sysname, con un valore predefinito .NULL
La corrispondenza dei criteri con caratteri jolly non è supportata. Questo parametro o il parametro @fktable_name , o entrambi, deve essere fornito.
[ @pktable_owner = ] N'pktable_owner'
Nome del proprietario della tabella (con la chiave primaria) utilizzato per restituire informazioni sul catalogo. @pktable_owner è sysname, con un valore predefinito .NULL
La corrispondenza dei criteri con caratteri jolly non è supportata. Se @pktable_owner non viene specificato, si applicano le regole di visibilità della tabella predefinite del sistema di gestione del database 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 è specificato e l'utente corrente non possiede 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 = ] N'pktable_qualifier'
Nome della tabella (con la chiave primaria) qualificatore. @pktable_qualifier è sysname, con il 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 = ] N'fktable_name'
Nome della tabella (con una chiave esterna) utilizzato per restituire informazioni sul catalogo. @fktable_name è sysname, con un valore predefinito .NULL
La corrispondenza dei criteri con caratteri jolly non è supportata. Questo parametro o il parametro @pktable_name , o entrambi, deve essere fornito.
[ @fktable_owner = ] N'fktable_owner'
Nome del proprietario della tabella (con una chiave esterna) utilizzato per restituire informazioni sul catalogo. @fktable_owner è sysname, con un valore predefinito .NULL
La corrispondenza dei criteri con caratteri jolly non è supportata. Se non viene specificato @fktable_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 @fktable_owner non è specificato e l'utente corrente non possiede una tabella con il @fktable_name specificato, la procedura 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 = ] N'fktable_qualifier'
Nome del qualificatore della tabella (con una chiave esterna). @fktable_qualifier è sysname, con un 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 dell'oggetto TABLE_NAME restituito. 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 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. Valori possibili:0 = CASCADE modifiche alla chiave esterna.1 = NO ACTION cambia 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 = CASCADE modifiche alla chiave esterna.1 = NO ACTION cambia 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 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. |
I risultati restituiti vengono ordinati in FKTABLE_QUALIFIER
base a , FKTABLE_OWNER
FKTABLE_NAME
, e KEY_SEQ
.
Osservazioni:
La codifica dell'applicazione che include tabelle con chiavi esterne disabilitate può essere implementata tramite i metodi seguenti:
Disabilitando temporaneamente il controllo dei vincoli (
ALTER TABLE NOCHECK
oCREATE TABLE NOT FOR REPLICATION
) durante l'uso delle tabelle e quindi abilitandolo di nuovo in un secondo momento.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 che includono una chiave esterna alla tabella specificata. Se viene specificato il nome della tabella di chiave esterna e il nome della tabella della chiave primaria è NULL
, sp_fkeys
restituisce tutte le tabelle correlate da una relazione chiave primaria/chiave esterna alle chiavi esterne nella tabella di chiave esterna.
La sp_fkeys
stored procedure 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';