sp_foreignkeys (Transact-SQL)

Se aplica a:SQL Server

Devuelve las claves externas que hacen referencia a las claves principales de la tabla en el servidor vinculado.

Convenciones de sintaxis de Transact-SQL

Sintaxis

  
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' ]  

Argumentos

[ @table_server = ] 'table_server' Es el nombre del servidor vinculado para el que se va a devolver información de la tabla. table_server es sysname, sin ningún valor predeterminado.

[ @pktab_name = ] 'pktab_name' Es el nombre de la tabla con una clave principal. pktab_name es sysname, con un valor predeterminado de NULL.

[ @pktab_schema = ] 'pktab_schema' Es el nombre del esquema con una clave principal. pktab_schemaes sysname, con un valor predeterminado de NULL. En SQL Server, contiene el nombre del propietario.

[ @pktab_catalog = ] 'pktab_catalog' Es el nombre del catálogo con una clave principal. pktab_cataloges sysname, con un valor predeterminado de NULL. En SQL Server, contiene el nombre de la base de datos.

[ @fktab_name = ] 'fktab_name' Es el nombre de la tabla con una clave externa. fktab_namees sysname, con un valor predeterminado de NULL.

[ @fktab_schema = ] 'fktab_schema' Es el nombre del esquema con una clave externa. fktab_schemaes sysname, con un valor predeterminado de NULL.

[ @fktab_catalog = ] 'fktab_catalog' Es el nombre del catálogo con una clave externa. fktab_cataloges sysname, con un valor predeterminado de NULL.

Valores de código de retorno

None

Conjuntos de resultados

Varios productos de DBMS admiten la nomenclatura de tres partes para tablas (catálogo).esquema.table), que se representa en el conjunto de resultados.

Nombre de la columna Tipo de datos Descripción
PKTABLE_CAT sysname Catálogo de la tabla en que reside la clave principal.
PKTABLE_SCHEM sysname Esquema de la tabla en que reside la clave principal.
PKTABLE_NAME sysname Nombre de la tabla (con la clave principal). Este campo siempre devuelve un valor.
PKCOLUMN_NAME sysname Nombre de la columna o columnas de clave principal, para cada columna del TABLE_NAME devuelto. Este campo siempre devuelve un valor.
FKTABLE_CAT sysname Catálogo de la tabla en que reside la clave externa.
FKTABLE_SCHEM sysname Esquema de la tabla en que reside la clave externa.
FKTABLE_NAME sysname Nombre de la tabla (con una clave externa). Este campo siempre devuelve un valor.
FKCOLUMN_NAME sysname Nombre de las columnas de clave externa por cada columna de TABLE_NAME devuelta. Este campo siempre devuelve un valor.
KEY_SEQ smallint Número de secuencia de la columna en una clave principal con varias columnas. Este campo siempre devuelve un valor.
UPDATE_RULE smallint Acción aplicada a la clave externa si la operación de SQL es una actualización. SQL Server devuelve 0, 1 o 2 para estas columnas:

0=CASCADE cambia a clave externa.

1=NO ACTION cambia si la clave externa está presente.

2=SET_NULL; establece la clave externa como NULL.
DELETE_RULE smallint Acción aplicada a la clave externa si la operación de SQL es una eliminación. SQL Server devuelve 0, 1 o 2 para estas columnas:

0=CASCADE cambia a clave externa.

1=NO ACTION cambia si la clave externa está presente.

2=SET_NULL; establece la clave externa como NULL.
FK_NAME sysname Identificador de la clave externa. Es NULL si no es aplicable al origen de datos. SQL Server devuelve el nombre de la restricción FOREIGN KEY.
PK_NAME sysname Identificador de la clave principal. Es NULL si no es aplicable al origen de datos. SQL Server devuelve el nombre de la restricción PRIMARY KEY.
DEFERRABILITY smallint Indica si se puede diferir la comprobación de restricciones.

En el conjunto de resultados, las columnas FK_NAME y PK_NAME siempre devuelven NULL.

Comentarios

sp_foreignkeys consulta el conjunto de filas FOREIGN_KEYS de la interfaz IDBSchemaRowset del proveedor OLE DB que corresponde a table_server. Los parámetros table_name, table_schema, table_catalog y columna se pasan a esta interfaz para restringir las filas devueltas.

Permisos

Es necesario contar con un permiso de tipo SELECT sobre el esquema.

Ejemplos

En el siguiente ejemplo se devuelve información de clave externa acerca de la tabla Department de la base de datos AdventureWorks2022 del servidor vinculado Seattle1.

EXEC sp_foreignkeys @table_server = N'Seattle1',   
   @pktab_name = N'Department',   
   @pktab_catalog = N'AdventureWorks2022';  

Consulte también

sp_catalogs (Transact-SQL)
sp_column_privileges (Transact-SQL)
sp_indexes (Transact-SQL)
sp_linkedservers (Transact-SQL)
sp_primarykeys (Transact-SQL)
sp_tables_ex (Transact-SQL)
sp_table_privileges (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)