sp_foreignkeys (Transact-SQL)

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

Icono de vínculo a temasConvenciones 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 del que se devuelve información de tablas. table_server es de tipo sysname y no tiene valor predeterminado.

  • [ @pktab_name = ] 'pktab_name'
    Es el nombre de la tabla con una clave principal. pktab_name es de tipo sysname y su valor predeterminado es NULL.

  • [ @pktab_schema = ] 'pktab_schema'
    Es el nombre del esquema con una clave principal. pktab_schema es de tipo sysname y su valor predeterminado es NULL. En SQL Server 2008, contiene el nombre del propietario.

  • [ @pktab_catalog = ] 'pktab_catalog'
    Es el nombre del catálogo con una clave principal. pktab_catalog es de tipo sysname y su valor predeterminado es 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 de tipo sysname y su valor predeterminado es NULL.

  • [ @fktab_schema = ] 'fktab_schema'
    Es el nombre del esquema con una clave externa. fktab_schemaes de tipo sysname y su valor predeterminado es NULL.

  • [ @fktab_catalog = ] 'fktab_catalog'
    Es el nombre del catálogo con una clave externa. fktab_cataloges de tipo sysname y su valor predeterminado es NULL.

Valores de código de retorno

Ninguno

Conjuntos de resultados

Diversos productos DBMS son compatibles con la nomenclatura de tres partes para tablas (catálogo**.esquema.**tabla), que se representa en el conjunto de resultados.

Nombre de 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 por cada columna de TABLE_NAME devuelta. 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 que se aplica a la clave externa cuando 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 que se aplica a la clave externa cuando 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 column se pasan a esta interfaz para restringir las filas devueltas.

Permisos

Requiere el permiso SELECT en el esquema.

Ejemplos

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

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