Я незнаком с t-sql, но я знаком с Oracle, поэтому:
Похоже, что вы запрашиваете словарь данных для всех ограничений ссылочной целостности для данной таблицы и для каждой, сообщая поля (ей) внешнего ключа и соответствующие поле и таблицу для таблицы, к которой они относятся.
В Oracle эта информация хранится в представлениях словаря данных ALL_CONSTRAINTS
и ALL_CONS_COLUMNS
(или DBA_CONSTRAINTS / DBA_CONS_COLUMNS or USER_CONSTRAINTS / USER_CONS_COLUMNS
, в зависимости от объема вашего запроса). Я бы запустил такой запрос:
SELECT fc.constraint_name AS ForeignConstraint
,fc.r_constraint_name AS ReferencedConstraint
,fcc.column_name AS ForeignKeyField
,rcc.column_name AS ReferencedKeyField
,rc.table_name AS ReferencedTable
FROM sys.all_constraints fc
,sys.all_constraints rc
,sys.all_cons_columns fcc
,sys.all_cons_columns rcc
WHERE fc.table_name = :name
AND fc.constraint_type = 'R'
AND fc.r_constraint_name = rc.constraint_name
AND fc.constraint_name = fcc.constraint_name
AND rc.constraint_name = rcc.constraint_name
AND fcc.position = rcc.position
ORDER BY fc.constraint_name, fcc.position;
Я добавил в запрос имена ограничений (ForeignConstraint и ReferencedConstraint), которые полезны, когда в ссылочных ограничениях используются сцепленные ключи.