sp_fkeys (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Warehouse do PDW (Analytics Platform System) no Microsoft Fabric
Retorna informações lógicas de chave estrangeira para o ambiente atual. Este procedimento mostra relações de chave estrangeira que incluem chaves estrangeiras desabilitadas.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_fkeys
[ [ @pktable_name = ] N'pktable_name' ]
[ , [ @pktable_owner = ] N'pktable_owner' ]
[ , [ @pktable_qualifier = ] N'pktable_qualifier' ]
[ , [ @fktable_name = ] N'fktable_name' ]
[ , [ @fktable_owner = ] N'fktable_owner' ]
[ , [ @fktable_qualifier = ] N'fktable_qualifier' ]
[ ; ]
Argumentos
@pktable_name [ = ] N'pktable_name'
O nome da tabela, com a chave primária, usada para retornar informações do catálogo. @pktable_name é sysname, com um padrão de NULL
. Não há suporte para a correspondência de padrões curinga. Este parâmetro ou o parâmetro @fktable_name , ou ambos, devem ser fornecidos.
@pktable_owner [ = ] N'pktable_owner'
O nome do proprietário da tabela (com a chave primária) usado para retornar informações do catálogo. @pktable_owner é sysname, com um padrão de NULL
. Não há suporte para a correspondência de padrões curinga. Se @pktable_owner não for especificado, as regras de visibilidade de tabela padrão do DBMS (sistema de gerenciamento de banco de dados) subjacente serão aplicadas.
No SQL Server, se o usuário atual possuir uma tabela com o nome especificado, as colunas dessa tabela serão retornadas. Se @pktable_owner não for especificado e o usuário atual não possuir uma tabela com o @pktable_name especificado, o procedimento procurará uma tabela com o @pktable_name especificado pertencente ao proprietário do banco de dados. Se ela existir, as colunas dessa tabela serão retornadas.
@pktable_qualifier [ = ] N'pktable_qualifier'
O nome do qualificador da tabela (com a chave primária). @pktable_qualifier é sysname, com um padrão de NULL
. Vários produtos de DBMS dão suporte à nomeação de três partes de tabelas (qualifier.owner.name). No SQL Server, o qualificador representa o nome do banco de dados. Em alguns produtos, ele representa o nome do servidor do ambiente de banco de dados da tabela.
@fktable_name [ = ] N'fktable_name'
O nome da tabela (com uma chave estrangeira) usada para retornar informações do catálogo. @fktable_name é sysname, com um padrão de NULL
. Não há suporte para a correspondência de padrões curinga. Este parâmetro ou o parâmetro @pktable_name , ou ambos, devem ser fornecidos.
@fktable_owner [ = ] N'fktable_owner'
O nome do proprietário da tabela (com uma chave estrangeira) usado para retornar informações do catálogo. @fktable_owner é sysname, com um padrão de NULL
. Não há suporte para a correspondência de padrões curinga. Se @fktable_owner não for especificado, as regras de visibilidade de tabela padrão do DBMS subjacente serão aplicadas.
No SQL Server, se o usuário atual possuir uma tabela com o nome especificado, as colunas dessa tabela serão retornadas. Se @fktable_owner não for especificado e o usuário atual não possuir uma tabela com o @fktable_name especificado, o procedimento procurará uma tabela com o @fktable_name especificado pertencente ao proprietário do banco de dados. Se ela existir, as colunas dessa tabela serão retornadas.
@fktable_qualifier [ = ] N'fktable_qualifier'
O nome do qualificador da tabela (com uma chave estrangeira). @fktable_qualifier é sysname, com um padrão de NULL
. No SQL Server, o qualificador representa o nome do banco de dados. Em alguns produtos, ele representa o nome do servidor do ambiente de banco de dados da tabela.
Valores do código de retorno
Nenhum.
Conjunto de resultados
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
PKTABLE_QUALIFIER |
sysname | Nome do qualificador da tabela (com a chave primária). Este campo pode ser NULL . |
PKTABLE_OWNER |
sysname | Nome do proprietário da tabela (com a chave primária). Esse campo sempre retorna um valor. |
PKTABLE_NAME |
sysname | Nome da tabela (com a chave primária). Esse campo sempre retorna um valor. |
PKCOLUMN_NAME |
sysname | Nome das colunas de chave primária, para cada coluna do TABLE_NAME retornado. Esse campo sempre retorna um valor. |
FKTABLE_QUALIFIER |
sysname | Nome do qualificador da tabela (com uma chave estrangeira). Este campo pode ser NULL . |
FKTABLE_OWNER |
sysname | Nome do proprietário da tabela (com uma chave estrangeira). Esse campo sempre retorna um valor. |
FKTABLE_NAME |
sysname | Nome da tabela (com a chave estrangeira). Esse campo sempre retorna um valor. |
FKCOLUMN_NAME |
sysname | Nome da coluna de chave estrangeira, para cada coluna do TABLE_NAME retornado. Esse campo sempre retorna um valor. |
KEY_SEQ |
smallint | Número de sequência da coluna em uma chave primária de várias colunas. Esse campo sempre retorna um valor. |
UPDATE_RULE |
smallint | Ação aplicada à chave estrangeira quando a operação SQL é uma atualização. Valores possíveis:0 = CASCADE Alterações na chave estrangeira.1 = NO ACTION muda se a chave estrangeira estiver presente.2 = SET_NULL 3 = Definir como padrão |
DELETE_RULE |
smallint | Ação aplicada à chave estrangeira quando a operação SQL é uma exclusão. Valores possíveis:0 = CASCADE Alterações na chave estrangeira.1 = NO ACTION muda se a chave estrangeira estiver presente.2 = SET_NULL 3 = definir padrão |
FK_NAME |
sysname | Identificador de chave estrangeira. Se não for NULL aplicável à fonte de dados. SQL Server retorna o nome da FOREIGN KEY restrição. |
PK_NAME |
sysname | Identificador da chave primária. Se não for NULL aplicável à fonte de dados. SQL Server retorna o nome da PRIMARY KEY restrição. |
Os resultados retornados são ordenados por FKTABLE_QUALIFIER
, FKTABLE_OWNER
, FKTABLE_NAME
, e KEY_SEQ
.
Comentários
A codificação do aplicativo que inclui tabelas com chaves estrangeiras desabilitadas pode ser implementada pelos seguintes métodos:
Desabilitar temporariamente a verificação de restrição (
ALTER TABLE NOCHECK
ouCREATE TABLE NOT FOR REPLICATION
) ao trabalhar com as tabelas e, em seguida, habilitá-la novamente mais tarde.Usando gatilhos ou código de aplicativo para impor relações.
Se o nome da tabela de chaves primárias for fornecido e o nome da tabela de chaves estrangeiras for NULL
, sp_fkeys
retornará todas as tabelas que incluem uma chave estrangeira para a tabela fornecida. Se o nome da tabela de chaves estrangeiras for fornecido e o nome da tabela de chaves primárias for NULL
, sp_fkeys
retornará todas as tabelas relacionadas por uma relação de chave primária/chave estrangeira a chaves estrangeiras na tabela de chaves estrangeiras.
O sp_fkeys
procedimento armazenado é equivalente a SQLForeignKeys no ODBC.
Permissões
Requer a permissão SELECT
no esquema.
Exemplos
O exemplo a seguir recupera uma lista de chaves estrangeiras para a tabela HumanResources.Department
no banco de dados AdventureWorks2022
.
USE AdventureWorks2022;
GO
EXEC sp_fkeys
@pktable_name = N'Department',
@pktable_owner = N'HumanResources';
Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)
O exemplo a seguir recupera uma lista de chaves estrangeiras para a tabela DimDate
no banco de dados AdventureWorksPDW2012
. Nenhuma linha é retornada porque o Azure Synapse Analytics não dá suporte a chaves estrangeiras.
EXEC sp_fkeys @pktable_name = N'DimDate';