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
PDW (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)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de