sp_foreignkeys (Transact-SQL)
Devuelve las claves externas que hacen referencia a las claves principales de la tabla en el servidor vinculado.
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_name es de tipo sysname y su valor predeterminado es NULL.[ @fktab_schema = ] 'fktab_schema'
Es el nombre del esquema con una clave externa. fktab_schema es de tipo sysname y su valor predeterminado es NULL.[ @fktab_catalog = ] 'fktab_catalog'
Es el nombre del catálogo con una clave externa. fktab_catalog es 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 en 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 en 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 en 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.
Notas
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 AdventureWorks del servidor vinculado Seattle1.
EXEC sp_foreignkeys @table_server = N'Seattle1',
@pktab_name = N'Department',
@pktab_catalog = N'AdventureWorks'
Vea también