SQL Server 2000 - запрос отношений внешнего ключа таблицы - PullRequest
5 голосов
/ 14 января 2009

Почти идентичен Запросить отношения внешнего ключа таблицы , но для SQL Server 2000

Для данной таблицы 'foo' мне нужен запрос для генерации набора таблиц с внешними ключами, указывающими на foo.

Ответы [ 4 ]

7 голосов
/ 14 января 2009
SELECT o2.name
FROM sysobjects o
INNER JOIN sysforeignkeys fk on o.id = fk.rkeyid
INNER JOIN sysobjects o2 on fk.fkeyid = o2.id
WHERE o.name = 'foo'
3 голосов
/ 14 января 2009

Попробуйте этот T-SQL:

select col_name(fkeyid, fkey) as column_name, object_name(rkeyid) as referenced_table_name, col_name(rkeyid, rkey) as referenced_column_name from sysforeignkeys where object_name(fkeyid) = 'tableNameHere' order by constid

Я немного переписал запрос, чтобы дать вам все остальные таблицы, которые зависят от конкретной таблицы:

select object_name(fkeyid),
col_name(fkeyid, fkey) as column_name,
col_name(rkeyid, rkey) as referenced_column_name
from sysforeignkeys
where object_name(rkeyid) = 'tableNameHere'
order by constid
2 голосов
/ 14 января 2009

Родители и дети

/* this will find out all of the foreign key references for a table*/

DECLARE @tableName varchar(128)
SET @tableName = 'tCounter'

SELECT   
    pt.[name] AS 'parentTable',  
    ct.[name] AS 'childTable',  
    fk.[name] AS 'fkName', 
*   
FROM sys.foreign_keys fk        
    INNER JOIN sys.tables pt              
        ON pt.object_ID = fk.parent_object_id        
    INNER JOIN sys.tables ct              
        ON ct.object_ID = fk.referenced_object_id   
WHERE pt.name = @tableName      
    OR ct.name = @tableName   
ORDER BY pt.name, ct.name
1 голос
/ 14 января 2009

Начните здесь

    SELECT cons.TABLE_NAME
    , cons.CONSTRAINT_NAME PK_NAME
    , cols.COLUMN_NAME 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS cons
LEFT join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cols
ON cons.CONSTRAINT_NAME = cols.CONSTRAINT_NAME
WHERE cons.CONSTRAINT_TYPE = 'foreign KEY'
ORDER BY cons.TABLE_NAME
    , cons.CONSTRAINT_NAME
    , cols.COLUMN_NAME

[править] форматирование испорчено

[edit2] больше не

...