Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie finde ich alle Tabellen, die Fremdschlüssel haben, die auf bestimmte Tabellenspalten verweisen UND Werte für diese Fremdschlüssel haben?

versuchen Sie diese Abfrage:

Sie müssen sysreferences verwenden und sysobjects Tabellen, um die Informationen zu erhalten

Die folgende Abfrage gibt alle Fremdschlüssel sowie übergeordnete Tabellen mit Spaltennamen aus der Datenbank aus

select cast(f.name as varchar(255)) as foreign_key_name
, cast(c.name as varchar(255)) as foreign_table
, cast(fc.name as varchar(255)) as foreign_column
, cast(p.name as varchar(255)) as parent_table
, cast(rc.name as varchar(255)) as parent_column
from  sysobjects f
inner join sysobjects c on f.parent_obj = c.id
inner join sysreferences r on f.id = r.constid
inner join sysobjects p on r.rkeyid = p.id
inner join syscolumns rc on r.rkeyid = rc.id and r.rkey1 = rc.colid
inner join syscolumns fc on r.fkeyid = fc.id and r.fkey1 = fc.colid
where f.type = 'F'