توسط دستور زیر میتوان لیست تمامی جداولی که از طریق Foreign Keyهای یک جدول خاص به آنها ارجاع داده شده است را بدست آورد.
[sql]
select distinct
schema_name(fk_tab.schema_id) + ‘.’ + fk_tab.name as foreign_table,
‘>-‘ as rel,
schema_name(pk_tab.schema_id) + ‘.’ + pk_tab.name as primary_table
from sys.foreign_keys fk
inner join sys.tables fk_tab
on fk_tab.object_id = fk.parent_object_id
inner join sys.tables pk_tab
on pk_tab.object_id = fk.referenced_object_id
where fk_tab.[name] = ‘Your table’ — enter table name here
— and schema_name(fk_tab.schema_id) = ‘Your table schema name’
order by schema_name(fk_tab.schema_id) + ‘.’ + fk_tab.name,
schema_name(pk_tab.schema_id) + ‘.’ + pk_tab.name
[/sql]
توجه: نام جدول مورد نظر خود را درون کد جایگزاری کرده و در صورتی که چندین جدول همنام در Schemaهای مختلف وجود دارد میتوانید با خارج کردن کد مربوطه از حالت کامنت, اطلاعات جدول مورد نظر را آسان تر بدست آورید.
- Foreign_Table: نام جدول خارجی به همراه Schema; جدولی که به عنوان پارامتر داده شده است
- Rel: نماد ارتباط, مشخص کننده Foreign Key و جهت ارتباط
- Primary_Table: نام جدول اصلی (مورد ارجاع) به همراه Schema
یک نمونه از اجرای دستور بالا روی جدول Sales.SalesOrderHeader از دیتابیس AdventureWorks:
دانلود این اسکریپت