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