Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Armazém no Microsoft Fabric
Base de dados SQL no Microsoft Fabric
Devolve informação lógica de chave estrangeira para o ambiente atual. Este procedimento mostra relações com chaves estrangeiras, incluindo chaves estrangeiras desativadas.
Transact-SQL convenções de sintaxe
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' ]
[ ; ]
Arguments
[ @pktable_name = ] N'pktable_name'
O nome da tabela, com a chave primária, é usado para devolver a informação do catálogo.
@pktable_name é sysname, com um padrão de NULL. A correspondência de padrões coringa não é suportada. 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 devolver a informação do catálogo.
@pktable_owner é sysname, com um padrão de NULL. A correspondência de padrões coringa não é suportada. Se @pktable_owner não for especificado, aplicam-se as regras padrão de visibilidade de tabelas do sistema de gestão de bases de dados (SGBD) subjacente.
No SQL Server, se o utilizador atual possuir uma tabela com o nome especificado, as colunas dessa tabela são devolvidas. Se @pktable_owner não for especificado e o utilizador atual não possuir uma tabela com a @pktable_name especificada, o procedimento procura uma tabela com a @pktable_name especificada pertencente ao proprietário da base de dados. Se existir, as colunas dessa tabela são devolvidas.
[ @pktable_qualifier = ] N'pktable_qualifier'
O qualificador do nome da tabela (com a chave primária).
@pktable_qualifier é sysname, com um padrão de NULL. Vários produtos de SGBD suportam a nomenclatura em três partes para tabelas (qualifier.owner.name). No SQL Server, o qualificador representa o nome da base de dados. Em alguns produtos, representa o nome do servidor do ambiente de base de dados da tabela.
[ @fktable_name = ] N'fktable_name'
O nome da tabela (com uma chave estrangeira) era usado para devolver informações do catálogo.
@fktable_name é sysname, com um padrão de NULL. A correspondência de padrões coringa não é suportada. 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 devolver informações do catálogo.
@fktable_owner é sysname, com um padrão de NULL. A correspondência de padrões coringa não é suportada. Se @fktable_owner não for especificado, aplicam-se as regras padrão de visibilidade de tabela do SGBD subjacente.
No SQL Server, se o utilizador atual possuir uma tabela com o nome especificado, as colunas dessa tabela são devolvidas. Se @fktable_owner não for especificado e o utilizador atual não possuir uma tabela com o @fktable_name especificado, o procedimento procura uma tabela com o @fktable_name especificado pertencente ao proprietário da base de dados. Se existir, as colunas dessa tabela são devolvidas.
[ @fktable_qualifier = ] N'fktable_qualifier'
O qualificador do nome da tabela (com uma chave estrangeira).
@fktable_qualifier é sysname, com um padrão de NULL. No SQL Server, o qualificador representa o nome da base de dados. Em alguns produtos, representa o nome do servidor do ambiente de base de dados da tabela.
Valores de código de retorno
Nenhum.
Conjunto de resultados
| Nome da coluna | Tipo de dados | Description |
|---|---|---|
PKTABLE_QUALIFIER |
sysname | Qualificador do nome 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). Este campo devolve sempre um valor. |
PKTABLE_NAME |
sysname | Nome da tabela (com a chave primária). Este campo devolve sempre um valor. |
PKCOLUMN_NAME |
sysname | Nome das colunas primárias-chave, para cada coluna do TABLE_NAME retorno. Este campo devolve sempre um valor. |
FKTABLE_QUALIFIER |
sysname | Qualificador do nome da tabela (com uma chave estrangeira). Este campo pode ser NULL. |
FKTABLE_OWNER |
sysname | Nome do dono da mesa (com chave estrangeira). Este campo devolve sempre um valor. |
FKTABLE_NAME |
sysname | Nome da tabela (com uma chave estrangeira). Este campo devolve sempre um valor. |
FKCOLUMN_NAME |
sysname | Nome da coluna da chave estrangeira, para cada coluna do TABLE_NAME devolvido. Este campo devolve sempre um valor. |
KEY_SEQ |
smallint | Número de sequência da coluna numa chave primária multicolunar. Este campo devolve sempre 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 para tonalidade estrangeira.1
=
NO ACTION Altera-se a chave estrangeira estiver presente.2 = SET_NULL3 = definir o padrão |
DELETE_RULE |
smallint | Ação aplicada à chave estrangeira quando a operação SQL é uma eliminação. Valores possíveis:0
=
CASCADE alterações para tonalidade estrangeira.1
=
NO ACTION Altera-se a chave estrangeira estiver presente.2 = SET_NULL3 = definir o padrão |
FK_NAME |
sysname | Identificador de chave estrangeira. Se não for NULL aplicável à fonte de dados. O SQL Server devolve o nome da FOREIGN KEY restrição. |
PK_NAME |
sysname | Identificador de chave primária. Se não for NULL aplicável à fonte de dados. O SQL Server devolve o nome da PRIMARY KEY restrição. |
Os resultados devolvidos estão ordenados por FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME, e KEY_SEQ.
Observações
A programação de aplicações que inclui tabelas com chaves estrangeiras desativadas pode ser implementada pelos seguintes métodos:
Desabilitar temporariamente a verificação de restrições (
ALTER TABLE NOCHECKouCREATE TABLE NOT FOR REPLICATION) enquanto se trabalha com as tabelas, e depois voltar a ativá-la mais tarde.Usar gatilhos ou código de aplicação para reforçar relações.
Se for fornecido o nome principal da tabela de chaves e o nome da tabela de chave estrangeira for NULL, sp_fkeys devolve todas as tabelas que incluem uma chave estrangeira à tabela dada. Se o nome da tabela de chave estrangeira for fornecido e o nome da tabela de chave primária for NULL, sp_fkeys devolve todas as tabelas relacionadas por uma relação chave primária/chave estrangeira a chaves estrangeiras na tabela de chave estrangeira.
O sp_fkeys procedimento armazenado é equivalente ao SQLForeignKeys no ODBC.
Permissions
Requer SELECT permissão no esquema.
Examples
O exemplo seguinte recupera uma lista de chaves estrangeiras para a HumanResources.Department tabela na AdventureWorks2025 base de dados.
USE AdventureWorks2022;
GO
EXECUTE sp_fkeys
@pktable_name = N'Department',
@pktable_owner = N'HumanResources';
Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)
O exemplo seguinte recupera uma lista de chaves estrangeiras para a DimDate tabela na AdventureWorksPDW2012 base de dados. Não são devolvidas linhas porque o Azure Synapse Analytics não suporta chaves estrangeiras.
EXECUTE sp_fkeys @pktable_name = N'DimDate';