Partilhar via


sp_fkeys (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Armazém no Microsoft FabricBase 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_NULL
3 = 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_NULL
3 = 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 NOCHECK ou CREATE 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';