SQL Server: listar todas as FK de um banco ou tabela específica

porFelipe Buzacchi

SQL Server: listar todas as FK de um banco ou tabela específica

Saber quais os locais onde um campo de uma tabela é chave estrangeira (FK) para outro pode ser muito necessário no caso de ser necessário atualizações manuais no banco de dados.

Para listar todas as FK de um banco ou de alguma tabela específica, basta executar o script abaixo. Nele já está filtrado para exibição de todas as FK que contém a tabela de Filial, como pode ser visto na cláusula “where” do SQL. Esta cláusula where pode ser alterada para filtrar por outros campos / tabelas, ou suprimida para listar todas as FK do banco de dados.

 

SELECT
KCU1.CONSTRAINT_NAME AS ‘FK_Nome_Constraint’
, KCU1.TABLE_NAME AS ‘FK_Nome_Tabela’
, KCU1.COLUMN_NAME AS ‘FK_Nome_Coluna’
, FK.is_disabled AS ‘FK_Esta_Desativada’
, KCU2.CONSTRAINT_NAME AS ‘PK_Nome_Constraint_Referenciada’
, KCU2.TABLE_NAME AS ‘PK_Nome_Tabela_Referenciada’
, KCU2.COLUMN_NAME AS ‘PK_Nome_Coluna_Referenciada’
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG
AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2
ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG
AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA
AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME
AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION
JOIN sys.foreign_keys FK on FK.name = KCU1.CONSTRAINT_NAME
where KCU2.TABLE_NAME = ‘filial’
Order by
KCU1.TABLE_NAME

Sobre o Autor

Felipe Buzacchi administrator

Deixe uma resposta