sp_fkeys (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Warehouse in 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 = ] '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'
É o nome da tabela, com a chave primária, usada para retornar informações de catálogo. pktable_name é sysname, com um padrão de NULL. Não há suporte para a correspondência de padrão curinga. Esse ou o parâmetro fktable_name ou ambos devem ser fornecidos.

[ @pktable_owner=] 'pktable_owner'
É o nome do proprietário da tabela (com a chave primária) usada para retornar informações de catálogo. pktable_owner é sysname, com um padrão de NULL. Não há suporte para a correspondência de padrão curinga. Se o pktable_owner não for especificado, serão aplicadas as regras de visibilidade de tabela padrão do DBMS subjacente.

No SQL Server, se o usuário atual possuir uma tabela com o nome especificado, as colunas dessa tabela serão retornadas. Se o pktable_owner não estiver especificado e o usuário atual não possuir uma tabela com o pktable_name especificado, este 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 =] '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=] 'fktable_name'
É o nome da tabela (com uma chave estrangeira) usada para retornar informações de catálogo. fktable_name é sysname, com um padrão de NULL. Não há suporte para a correspondência de padrão curinga. Esse ou o parâmetro pktable_name ou ambos devem ser fornecidos.

[ @fktable_owner =] 'fktable_owner'
É o nome do proprietário da tabela (com uma chave estrangeira) usada para retornar informações de catálogo. fktable_owner é sysname, com um padrão de NULL. Não há suporte para a correspondência de padrão curinga. Se o fktable_owner não for especificado, serão aplicadas as regras de visibilidade de tabela padrão do DBMS subjacente.

No SQL Server, se o usuário atual possuir uma tabela com o nome especificado, as colunas dessa tabela serão retornadas. Se o fktable_owner não estiver especificado e o usuário atual não possuir uma tabela com o fktable_name especificado, este 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= ] '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

Conjuntos de resultados

Nome da coluna Data type Descrição
PKTABLE_QUALIFIER sysname Nome do qualificador da tabela (com a chave primária). Esse 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). Esse 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 para chave estrangeira.
1=NO ACTION altera se a chave estrangeira estiver presente.
2 = definir 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 para chave estrangeira.
1=NO ACTION altera se a chave estrangeira estiver presente.
2 = definir null
3 = Definir como padrão
FK_NAME sysname Identificador de chave estrangeira. Será NULL se não for aplicável à fonte de dados. O SQL Server retorna o nome da restrição de FOREIGN KEY.
PK_NAME sysname Identificador da chave primária. Será NULL se não for aplicável à fonte de dados. O SQL Server retorna o nome da restrição de PRIMARY KEY.

Os resultados retornados são ordenados por FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME e KEY_SEQ.

Comentários

A codificação de aplicativo incluindo tabelas com chaves estrangeiras desabilitadas pode ser implementada pelo seguinte:

  • Desabilitando temporariamente a verificação de restrições (ALTER TABLE NOCHECK ou CREATE TABLE NOT FOR REPLICATION) ao trabalhar com tabelas e habilitando-a novamente mais tarde.

  • Usando gatilhos ou código de aplicativo para impor relações.

Se o nome da tabela de chave primária for fornecido e se o nome da tabela de chave estrangeira for NULL, sp_fkeys retornará todas as tabelas que incluam uma chave estrangeira para a tabela especificada. Se o nome da tabela de chave estrangeira for fornecido e se o nome da tabela de chave primária for NULL, sp_fkeys retornará todas as tabelas associadas por uma relação de chave primária/chave estrangeira com chaves estrangeiras na tabela de chave estrangeira.

O procedimento armazenado de sp_fkeys é equivalente a SQLForeignKeys em 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';  

Consulte Também

procedimentos armazenados do catálogo (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)
sp_pkeys (Transact-SQL)