Compartir a través de


sp_fkeys (Transact-SQL)

Devuelve información acerca de las claves externas lógicas del entorno actual. Este procedimiento muestra las relaciones de las claves externas, incluidas las claves externas deshabilitadas.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_fkeys [ @pktable_name = ] 'pktable_name' 
     [ , [ @pktable_owner = ] 'pktable_owner' ] 
     [ , [ @pktable_qualifier = ] 'pktable_qualifier' ] 
     { , [ @fktable_name = ] 'fktable_name' } 
     [ , [ @fktable_owner = ] 'fktable_owner' ] 
     [ , [ @fktable_qualifier = ] 'fktable_qualifier' ]

Argumentos

  • [ @pktable_name = ] 'pktable_name'
    Es el nombre de la tabla, con la clave principal, utilizada para devolver información del catálogo. pktable_name es de tipo sysname y su valor predeterminado es NULL. No se admite la coincidencia de patrón de caracteres comodín. Se debe proporcionar este parámetro, el parámetro fktable_name o ambos.
  • [ @pktable_owner = ] 'pktable_owner'
    Es el nombre del propietario de la tabla, con la clave principal, utilizada para devolver información del catálogo. pktable_owner es de tipo sysname y su valor predeterminado es NULL. No se admite la coincidencia de patrón de caracteres comodín. Si no se especifica pktable_owner, se aplican las reglas predeterminadas de visibilidad de tabla del DBMS subyacente.

    Si no se especifica @pktable_owner, sólo se buscará en el esquema dbo.

  • [ @pktable_qualifier = ] 'pktable_qualifier'
    Es el nombre del calificador de la tabla, con la clave principal. pktable_qualifier es de tipo sysname y su valor predeterminado es NULL. Varios productos DBMS admiten nombres de tres partes para las tablas (qualifier.owner.name). En SQL Server, el calificador representa el nombre de la base de datos. En algunos productos, representa el nombre del servidor del entorno de base de datos de la tabla.
  • [ @fktable_name = ] 'fktable_name'
    Es el nombre de la tabla, con una clave externa, utilizada para devolver información del catálogo. fktable_name es de tipo sysname y su valor predeterminado es NULL. No se admite la coincidencia de patrón de caracteres comodín. Se debe proporcionar este parámetro, el parámetro pktable_name o ambos.
  • [ @fktable_owner = ] 'fktable_owner'
    Es el nombre del propietario de la tabla, con una clave externa, utilizada para devolver información del catálogo. fktable_owner es de tipo sysname y su valor predeterminado es NULL. No se admite la coincidencia de patrón de caracteres comodín. Si no se especifica fktable_owner, se aplican las reglas predeterminadas de visibilidad de tabla del DBMS subyacente.

    Si no se especifica @fktable_owner, sólo se buscará en el esquema dbo.

  • [ @fktable_qualifier =] 'fktable_qualifier'
    Es el nombre del calificador de la tabla, con una clave externa. fktable_qualifier es de tipo sysname y su valor predeterminado es NULL. En SQL Server, el calificador representa el nombre de la base de datos. En algunos productos, representa el nombre del servidor del entorno de base de datos de la tabla.

Conjuntos de resultados

Nombre de columna Tipo de datos Descripción

PKTABLE_QUALIFIER

sysname

Nombre del calificador de la tabla (con la clave principal). Este campo puede ser NULL.

PKTABLE_OWNER

sysname

Nombre del propietario de la tabla (con la clave principal). Este campo siempre devuelve un valor.

PKTABLE_NAME

sysname

Nombre de la tabla (con la clave principal). Este campo siempre devuelve un valor.

PKCOLUMN_NAME

sysname

Nombre de las columnas de clave principal para cada columna de TABLE_NAME devuelta. Este campo siempre devuelve un valor.

FKTABLE_QUALIFIER

sysname

Nombre del calificador de la tabla (con una clave externa). Este campo puede ser NULL.

FKTABLE_OWNER

sysname

Nombre del propietario de la tabla (con una clave externa). Este campo siempre devuelve un valor.

FKTABLE_NAME

sysname

Nombre de la tabla (con una clave externa). Este campo siempre devuelve un valor.

FKCOLUMN_NAME

sysname

Nombre de la columna de clave externa para 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 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 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.

Los resultados devueltos se ordenan por FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME y KEY_SEQ.

Notas

La codificación de aplicaciones que incluye tablas con claves externas deshabilitadas se puede implementar si:

  • Se deshabilita temporalmente la comprobación de restricciones (ALTER TABLE NOCHECK o CREATE TABLE NOT FOR REPLICATION) mientras se trabaja con las tablas y, después, se vuelve a habilitar. Para obtener más información acerca de la opción NOT FOR REPLICATION, vea Controlar restricciones, identidades y desencadenadores con NOT FOR REPLICATION.
  • Se utilizan desencadenadores o código de aplicación para exigir relaciones.

Si se proporciona el nombre de tabla de la clave principal y el nombre de tabla de la clave externa es NULL, sp_fkeys devuelve todas las tablas que contengan una clave externa para la tabla dada. Si se proporciona el nombre de tabla de la clave externa y el nombre de tabla de la clave principal es NULL, sp_fkeys devuelve todas las tablas relacionadas mediante una relación de clave principal y clave externa con las claves externas de la tabla de claves externas.

El procedimiento almacenado sp_fkeys es equivalente a SQLForeignKeys en ODBC.

Permisos

Requiere el permiso SELECT en el esquema.

Valores de código de retorno

Ninguno

Ejemplos

En el siguiente ejemplo se recupera una lista de claves externas de la tabla HumanResources.Department en la base de datos AdventureWorks.

USE AdventureWorks;
GO
EXEC sp_fkeys @pktable_name = N'Department',
   @pktable_owner = N'HumanResources'

Vea también

Referencia

Procedimientos almacenados del catálogo (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)
sp_pkeys (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005