sp_foreignkeys (Transact-SQL)
Restituisce le chiavi esterne che fanno riferimento alle chiavi primarie nella tabella del server collegato.
Sintassi
sp_foreignkeys [ @table_server = ] 'table_server'
[ , [ @pktab_name = ] 'pktab_name' ]
[ , [ @pktab_schema = ] 'pktab_schema' ]
[ , [ @pktab_catalog = ] 'pktab_catalog' ]
[ , [ @fktab_name = ] 'fktab_name' ]
[ , [ @fktab_schema = ] 'fktab_schema' ]
[ , [ @fktab_catalog = ] 'fktab_catalog' ]
Argomenti
[ @table_server = ] 'table_server'
Nome del server collegato di cui si desidera ottenere informazioni di tabella. table_server è di tipo sysname e non prevede alcun valore predefinito.[ @pktab_name = ] 'pktab_name'
Nome della tabella contenente una chiave primaria. pktab_name è di tipo sysname e il valore predefinito è NULL.[ @pktab_schema = ] 'pktab_schema'
Nome dello schema contenente una chiave primaria. pktab_schemaè di tipo sysname e il valore predefinito è NULL. In SQL Server 2008 contiene il nome del proprietario.[ @pktab_catalog = ] 'pktab_catalog'
Nome del catalogo contenente una chiave primaria. pktab_catalogè di tipo sysname e il valore predefinito è NULL. In SQL Server contiene il nome del database.[ @fktab_name = ] 'fktab_name'
Nome della tabella contenente una chiave esterna. fktab_nameè di tipo sysname e il valore predefinito è NULL.[ @fktab_schema = ] 'fktab_schema'
Nome dello schema contenente una chiave esterna. fktab_schemaè di tipo sysname e il valore predefinito è NULL.[ @fktab_catalog = ] 'fktab_catalog'
Nome del catalogo contenente una chiave esterna. fktab_catalogè di tipo sysname e il valore predefinito è NULL.
Valori restituiti
Nessuno
Set di risultati
Vari prodotti DBMS supportano i nomi di tabella composti da tre parti (catalogo**.schema.**tabella), adottati nel set di risultati.
Nome colonna |
Tipo di dati |
Descrizione |
---|---|---|
PKTABLE_CAT |
sysname |
Catalogo della tabella contenente la chiave primaria. |
PKTABLE_SCHEM |
sysname |
Schema della tabella contenente la chiave primaria. |
PKTABLE_NAME |
sysname |
Nome della tabella contenente la chiave primaria. Questo campo restituisce sempre un valore. |
PKCOLUMN_NAME |
sysname |
Nome delle colonne della chiave primaria, per ogni colonna della tabella TABLE_NAME restituita. Questo campo restituisce sempre un valore. |
FKTABLE_CAT |
sysname |
Catalogo della tabella contenente la chiave esterna. |
FKTABLE_SCHEM |
sysname |
Schema della tabella contenente la chiave esterna. |
FKTABLE_NAME |
sysname |
Nome della tabella contenente una chiave esterna. Questo campo restituisce sempre un valore. |
FKCOLUMN_NAME |
sysname |
Nome delle colonne della 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, 1 o 2 per queste colonne: 0 = modifiche di tipo CASCADE alla chiave esterna. 1 = modifiche di tipo NO ACTION se la chiave esterna è presente. 2 = SET_NULL; la chiave esterna viene impostata su NULL. |
DELETE_RULE |
smallint |
Azione applicata alla chiave esterna quando l'operazione SQL è un'operazione di eliminazione. SQL Server restituisce 0, 1 o 2 per queste colonne: 0 = modifiche di tipo CASCADE alla chiave esterna. 1 = modifiche di tipo NO ACTION se la chiave esterna è presente. 2 = SET_NULL; la chiave esterna viene impostata su NULL. |
FK_NAME |
sysname |
Identificatore della chiave esterna. NULL se non è applicabile all'origine dei dati. SQL Server restituisce il nome del vincolo FOREIGN KEY. |
PK_NAME |
sysname |
Identificatore della chiave primaria. NULL se non è applicabile all'origine dei dati. SQL Server restituisce il nome del vincolo PRIMARY KEY. |
DEFERRABILITY |
smallint |
Indica se è possibile posticipare il controllo dei vincoli. |
Nel set di risultati le colonne FK_NAME e PK_NAME restituiscono sempre NULL.
Osservazioni
La stored procedure sp_foreignkeys esegue una query nel set di righe FOREIGN_KEYS dell'interfaccia IDBSchemaRowset del provider OLE DB corrispondente a table_server. I parametri table_name, table_schema, table_catalog e column vengono passati a questa interfaccia per limitare il numero di righe restituito.
Autorizzazioni
È richiesta l'autorizzazione SELECT per lo schema.
Esempi
Nell'esempio seguente vengono restituite informazioni relative alla chiave esterna per la tabella Department del database AdventureWorks presente nel server collegato Seattle1.
EXEC sp_foreignkeys @table_server = N'Seattle1',
@pktab_name = N'Department',
@pktab_catalog = N'AdventureWorks'
Vedere anche