Compartir vía


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 = ] N'table_server'
    [ , [ @pktab_name = ] N'pktab_name' ]
    [ , [ @pktab_schema = ] N'pktab_schema' ]
    [ , [ @pktab_catalog = ] N'pktab_catalog' ]
    [ , [ @fktab_name = ] N'fktab_name' ]
    [ , [ @fktab_schema = ] N'fktab_schema' ]
    [ , [ @fktab_catalog = ] N'fktab_catalog' ]
[ ; ]

Argumentos

[ @table_server = ] N'table_server'

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 = ] N'pktab_name'

Nombre de la tabla con una clave principal. @pktab_name es sysname, con un valor predeterminado de NULL.

[ @pktab_schema = ] N'pktab_schema'

Nombre del esquema con una clave principal. @pktab_schema es sysname, con un valor predeterminado de NULL. En SQL Server, este parámetro contiene el nombre del propietario.

[ @pktab_catalog = ] N'pktab_catalog'

Nombre del catálogo con una clave principal. @pktab_catalog es sysname, con un valor predeterminado de NULL. En SQL Server, este parámetro contiene el nombre de la base de datos.

[ @fktab_name = ] N'fktab_name'

Nombre de la tabla con una clave externa. @fktab_name es sysname, con un valor predeterminado de NULL.

[ @fktab_schema = ] N'fktab_schema'

Nombre del esquema con una clave externa. @fktab_schema es sysname, con un valor predeterminado de NULL.

[ @fktab_catalog = ] N'fktab_catalog'

Nombre del catálogo con una clave externa.@fktab_catalog es sysname, con un valor predeterminado de NULL.

Valores de código de retorno

Ninguno.

Conjunto de resultados

Varios productos del sistema de administración de bases de datos (DBMS) admiten la nomenclatura de tres partes para las tablas (<catalog>.<schema>.<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, para cada columna del TABLE_NAME devuelto. 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 cambios en la clave externa.
1 = NO ACTION cambia si la clave externa está presente.
2 = SET_NULL; establezca la clave externa en 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 cambios en la clave externa.
1 = NO ACTION cambia si la clave externa está presente.
2 = SET_NULL; establezca la clave externa en NULL.
FK_NAME sysname Identificador de la clave externa. Es si no es NULL aplicable al origen de datos. SQL Server devuelve el nombre de FOREIGN KEY la restricción.
PK_NAME sysname Identificador de la clave principal. Es si no es NULL aplicable al origen de datos. SQL Server devuelve el nombre de PRIMARY KEY la restricción.
DEFERRABILITY smallint Indica si se puede diferir la comprobación de restricciones.

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

Comentarios

sp_foreignkeys consulta el conjunto de filas FOREIGN_KEYS de la IDBSchemaRowset interfaz del proveedor OLE DB que corresponde a @table_server. Los parámetros @table_name, @table_schema, @table_catalog y @column 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';