Condividi tramite


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.

Icona di collegamento a un argomento 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)

Stored procedure di sistema (Transact-SQL)

sp_pkeys (Transact-SQL)