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)
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per