0

相互に依存するすべてのテーブルをリストする必要があります

TableA には TableB との外部キー関係があります TableB には TableA との外部キー関係があります

これまでのところ、テーブルの外部キー関係を見つけるためのスクリプトを取得しましたが、それらをフィルター処理してクロス テーブル参照のみを取得するにはどうすればよいでしょうか。

私のスクリプトはそうです:

SELECT  CAST(p.name AS VARCHAR(255)) AS [Primary Table] ,
            CAST(c.name AS VARCHAR(255)) AS [Foreign Table]
    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
            LEFT JOIN syscolumns rc2 ON r.rkeyid = rc2.id
                                        AND r.rkey2 = rc.colid
            LEFT JOIN syscolumns fc2 ON r.fkeyid = fc2.id
                                        AND r.fkey2 = fc.colid
    WHERE   f.type = 'F'
    ORDER BY CAST(p.name AS VARCHAR(255))
4

1 に答える 1