sp_foreignkeys (Transact-SQL)

Aplica-se: SQL Server

Retorna as chaves estrangeiras que referenciam as chaves primárias na tabela do servidor vinculado.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_foreignkeys
    [ @table_server = ] N'table_server'
    [ , [ @pktab_name = ] N'pktab_name' ]
    [ , [ @pktab_schema = ] N'pktab_schema' ]
    [ , [ @pktab_catalog = ] N'pktab_catalog' ]
    [ , [ @fktab_name = ] N'fktab_name' ]
    [ , [ @fktab_schema = ] N'fktab_schema' ]
    [ , [ @fktab_catalog = ] N'fktab_catalog' ]
[ ; ]

Argumentos

@table_server [ = ] N'table_server'

O nome do servidor vinculado para o qual retornar informações da tabela. @table_server é sysname, sem padrão.

@pktab_name [ = ] N'pktab_name'

O nome da tabela com uma chave primária. @pktab_name é sysname, com um padrão de NULL.

@pktab_schema [ = ] N'pktab_schema'

O nome do esquema com uma chave primária. @pktab_schema é sysname, com um padrão de NULL. No SQL Server, esse parâmetro contém o nome do proprietário.

@pktab_catalog [ = ] N'pktab_catalog'

O nome do catálogo com uma chave primária. @pktab_catalog é sysname, com um padrão de NULL. No SQL Server, esse parâmetro contém o nome do banco de dados.

@fktab_name [ = ] N'fktab_name'

O nome da tabela com uma chave estrangeira. @fktab_name é sysname, com um padrão de NULL.

@fktab_schema [ = ] N'fktab_schema'

O nome do esquema com uma chave estrangeira. @fktab_schema é sysname, com um padrão de NULL.

@fktab_catalog [ = ] N'fktab_catalog'

O nome do catálogo com uma chave estrangeira.@fktab_catalog é sysname, com um padrão de NULL.

Valores do código de retorno

Nenhum.

Conjunto de resultados

Vários produtos de sistema de gerenciamento de banco de dados (DBMS) suportam nomenclatura de três partes para tabelas (<catalog>.<schema>.<table>), que é representada no conjunto de resultados.

Nome da coluna Tipo de dados Descrição
PKTABLE_CAT sysname Catálogo para a tabela na qual a chave primária reside.
PKTABLE_SCHEM sysname Esquema para a tabela na qual a chave primária reside.
PKTABLE_NAME sysname Nome da tabela (com a chave primária). Esse campo sempre retorna um valor.
PKCOLUMN_NAME sysname Nome da coluna ou colunas de chave primária, para cada coluna do TABLE_NAME retornado. Esse campo sempre retorna um valor.
FKTABLE_CAT sysname Catálogo para a tabela na qual a chave estrangeira reside.
FKTABLE_SCHEM sysname Esquema para a tabela na qual a chave estrangeira reside.
FKTABLE_NAME sysname Nome da tabela (com a chave estrangeira). Esse campo sempre retorna um valor.
FKCOLUMN_NAME sysname Nome das colunas 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. O SQL Server retorna 0, 1 ou 2 para estas colunas:

0 = CASCADE Alterações na chave estrangeira.
1 = NO ACTION muda se a chave estrangeira estiver presente.
2 = SET_NULL; Defina a chave estrangeira como NULL.
DELETE_RULE smallint Ação aplicada à chave estrangeira quando a operação SQL é uma exclusão. O SQL Server retorna 0, 1 ou 2 para estas colunas:

0 = CASCADE Alterações na chave estrangeira.
1 = NO ACTION muda se a chave estrangeira estiver presente.
2 = SET_NULL; Defina a chave estrangeira como NULL.
FK_NAME sysname Identificador de chave estrangeira. Se não for NULL aplicável à fonte de dados. SQL Server retorna o nome da FOREIGN KEY restrição.
PK_NAME sysname Identificador da chave primária. Se não for NULL aplicável à fonte de dados. SQL Server retorna o nome da PRIMARY KEY restrição.
DEFERRABILITY smallint Indica se a verificação de restrição é adiável.

No conjunto de resultados, as FK_NAME colunas e PK_NAME sempre retornam NULL.

Comentários

sp_foreignkeys consulta o conjunto de linhas FOREIGN_KEYS da IDBSchemaRowset interface do provedor OLE DB que corresponde a @table_server. Os parâmetros @table_name, @table_schema, @table_catalog e @column são passados para essa interface para restringir as linhas retornadas.

Permissões

Requer a permissão SELECT no esquema.

Exemplos

O exemplo a seguir retorna informações de chave estrangeira sobre a tabela Department no banco de dados AdventureWorks2022 do servidor vinculado, Seattle1.

EXEC sp_foreignkeys @table_server = N'Seattle1',
   @pktab_name = N'Department',
   @pktab_catalog = N'AdventureWorks2022';