sp_fkeys (Transact-SQL)
Restituisce informazioni sulle chiavi esterne logiche per l'ambiente corrente. Questa procedura visualizza le relazioni di chiave esterna, incluse le chiavi esterne disabilitate.
Convenzioni della 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 è di tipo sysname e il valore predefinito è NULL. Le ricerche con caratteri jolly non sono supportate. È necessario specificare questo parametro o il parametro fktable_name oppure entrambi.[ @pktable\_owner=\] 'pktable_owner'
Nome del proprietario della tabella contenente la chiave primaria, utilizzata per restituire informazioni del catalogo. pktable_owner è di tipo sysname e il valore predefinito è NULL. Le ricerche con caratteri jolly non sono supportate. Se non si specifica pktable_owner, vengono applicate le regole di visibilità della tabella predefinite del DBMS sottostante.In SQL Server se l'utente corrente è il proprietario di una tabella avente il nome specificato, vengono restituite le colonne di tale tabella. Se pktable_owner viene omesso e l'utente corrente non è il proprietario di una tabella con il valore pktable_name specificato, viene eseguita la ricerca di una tabella con nome corrispondente al valore pktable_name specificato e 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 è di tipo sysname e il valore predefinito è NULL. Vari prodotti DBMS supportano i nomi di tabella composti da tre parti, ovvero 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 è di tipo sysname e il valore predefinito è NULL. Le ricerche con caratteri jolly non sono supportate. È necessario specificare questo parametro o il parametro pktable_name oppure entrambi.[ @fktable\_owner =] 'fktable_owner'
Nome del proprietario della tabella contenente la chiave esterna, utilizzata per restituire informazioni del catalogo. fktable_owner è di tipo sysname e il valore predefinito è NULL. Le ricerche con caratteri jolly non sono supportate. Se non si specifica fktable_owner, vengono applicate le regole di visibilità della tabella predefinite del sistema DBMS sottostante.In SQL Server se l'utente corrente è il proprietario di una tabella avente il nome specificato, vengono restituite le colonne di tale tabella. Se fktable_owner viene omesso e l'utente corrente non è il proprietario di una tabella con il valore fktable_name specificato, viene eseguita la ricerca di una tabella con nome corrispondente al valore fktable_name specificato e 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 è di tipo sysname e il valore predefinito è NULL. In SQL Server il qualificatore rappresenta il nome del database. In alcuni prodotti rappresenta il nome del server dell'ambiente di database della tabella.
Valori di codice restituiti
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 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. SQL Server restituisce 0 o 1 per queste colonne: 0 = modifiche di tipo CASCADE alla chiave esterna. 1 = modifiche di tipo NO ACTION se la chiave esterna è presente. |
DELETE_RULE |
smallint |
Azione applicata alla chiave esterna quando l'operazione SQL è un'operazione di eliminazione. SQL Server restituisce 0 o 1 per queste colonne: 0 = modifiche di tipo CASCADE alla chiave esterna. 1 = modifiche di tipo NO ACTION se la chiave esterna è presente. |
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 nella tabella della chiave esterna.
La stored procedure sp_fkeys è equivalente a SQLForeignKeys in ODBC.
Autorizzazioni
È necessario disporre dell'autorizzazione SELECT per lo schema.
Esempi
Nell'esempio seguente viene recuperato un elenco delle chiavi esterne per la tabella HumanResources.Department nel database AdventureWorks2012.
USE AdventureWorks2012;
GO
EXEC sp_fkeys @pktable_name = N'Department'
,@pktable_owner = N'HumanResources';
Vedere anche
Riferimento
Stored procedure di catalogo (Transact-SQL)