Partilhar via


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 = ] '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 Tipo de dados 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 nulo
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 nulo
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)