sp_fkeys (Transact-SQL)
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.
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 NULL. Não há suporte para a correspondência de padrão curinga. Este parâmetro ou o parâmetro fktable_name, ou ambos, deve ser fornecido.[ @pktable_owner = ] 'pktable_owner'
É o nome do proprietário da tabela (com a chave primária) usado para retornar informações de catálogo. pktable_owner é sysname, com um padrão NULL. Não há suporte para a correspondência de padrão curinga. Se 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 pktable_owner não for especificado e o usuário atual não possuir uma tabela com pktable_name especificado, o procedimento procurará uma tabela com pktable_name especificado que seja do proprietário do banco de dados. Se 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 NULL. Diversos produtos de DBMS oferecem suporte à nomenclatura de três partes para tabelas (qualifier.owner.name). No SQL Server, o qualificador representa o nome do banco de dados. Em alguns produtos, representa o nome do servidor do ambiente de banco de dados da tabela.[ @fktable_name = ] 'fktable_name'
É o nome da tabela (com a chave estrangeira) usada para retornar informações de catálogo. fktable_name é sysname, com um padrão NULL. Não há suporte para a correspondência de padrão curinga. Este parâmetro ou o parâmetro pktable_name, ou ambos, deve ser fornecido.[ @fktable_owner = ] 'fktable_owner'
É o nome do proprietário da tabela (com uma chave estrangeira) usado para retornar informações de catálogo. fktable_owner é sysname, com um padrão NULL. Não há suporte para a correspondência de padrão curinga. Se 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 fktable_owner não for especificado e o usuário atual não possuir uma tabela com fktable_name especificado, o procedimento procurará uma tabela com fktable_name especificado que seja do proprietário do banco de dados. Se 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 NULL. No SQL Server, o qualificador representa o nome do banco de dados. Em alguns produtos, representa o nome do servidor do ambiente de banco de dados da tabela.
Valores de código de retorno
Nenhum
Conjuntos de resultados
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
PKTABLE_QUALIFIER |
sysname |
Nome do qualificador 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 sempre retorna um valor. |
PKTABLE_NAME |
sysname |
Nome da tabela (com a chave primária). Este campo sempre retorna um valor. |
PKCOLUMN_NAME |
sysname |
Nome das colunas de chave primária, para cada coluna do TABLE_NAME retornado. Este campo sempre retorna um valor. |
FKTABLE_QUALIFIER |
sysname |
Nome do qualificador da tabela (com uma chave estrangeira). Este campo pode ser NULL. |
FKTABLE_OWNER |
sysname |
Nome do proprietário da tabela (com uma chave estrangeira). Este campo sempre retorna um valor. |
FKTABLE_NAME |
sysname |
Nome da tabela (com a chave estrangeira). Este campo sempre retorna um valor. |
FKCOLUMN_NAME |
sysname |
Nome da coluna de chave estrangeira, para cada coluna do TABLE_NAME retornado. Este campo sempre retorna um valor. |
KEY_SEQ |
smallint |
Número de seqüência da coluna em uma chave primária de várias colunas. Este 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 ou 1 para estas colunas: 0=CASCADE altera para chave estrangeira. 1=NO ACTION altera se a chave estrangeira estiver presente. 2=SET_NULL define 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 ou 1 para estas colunas: 0=CASCADE altera para chave estrangeira. 1=NO ACTION altera se a chave estrangeira estiver presente. 2=SET_NULL define a chave estrangeira como NULL. |
FK_NAME |
sysname |
Identificador de chave estrangeira. É NULL se não for aplicável à fonte de dados. O SQL Server retorna o nome da restrição FOREIGN KEY. |
PK_NAME |
sysname |
Identificador de chave primária. É NULL se não for aplicável à fonte de dados. O SQL Server retorna o nome da restrição 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 conforme o seguinte:
Desabilitando temporariamente a verificação de restrições (ALTER TABLE NOCHECK ou CREATE TABLE NOT FOR REPLICATION) ao trabalhar com tabelas e habilitando novamente mais tarde. Para obter mais informações sobre a opção NOT FOR REPLICATION, consulte Controlando restrições, identidades e gatilhos com NOT FOR REPLICATION.
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 incluem 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 AdventureWorks.
USE AdventureWorks;
GO
EXEC sp_fkeys @pktable_name = N'Department'
,@pktable_owner = N'HumanResources'