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)
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