1

外部キーの依存関係の順序で SQL Server のテーブル名を取得するクエリを作成するにはどうすればよいですか?

他の 2 つのテーブルに外部キー制約があるプライマリ テーブルであるテーブル XYZ がある場合、テーブル XYZ を最初に表示する必要があります。

これは、テーブルを正しい順序で作成できるようにするためです。

4

3 に答える 3

0
select * from sys.tables st
join sys.foreign_keys sfk on st.object_id = sfk.parent_object_id 
where sfk.name = 'Foreign_Key'
于 2015-10-14T18:19:10.710 に答える
0

このクエリは、依存関係の順序でテーブルを返します。

     ;WITH vwTableDependancy AS (
        SELECT 
            tables.object_id Dependant , NULL Parent
        FROM 
            sys.tables
        LEFT OUTER JOIN
            sys.foreign_keys
        ON
            foreign_keys.parent_object_id = tables.object_id
        WHERE
            foreign_keys.parent_object_id IS NULL
        UNION    
        SELECT 
            parent_object_id Dependant, referenced_object_id Parent
        FROM 
            sys.foreign_keys
    )
    , vwTableHierarchy AS (
        SELECT Dependant,Parent, 0 lvl FROM vwTableDependancy WHERE Parent IS NULL
        UNION ALL
        SELECT 
            vwTableDependancy.Dependant,vwTableDependancy.Parent , lvl+1
        FROM 
            vwTableDependancy 
        INNER JOIN
            vwTableHierarchy
        ON
            vwTableDependancy.Parent = vwTableHierarchy.Dependant
    )
    SELECT 
         OBJECT_NAME(Dependant) Dependant
        ,OBJECT_NAME(Parent) Parent
        , lvl  
    FROM 
        vwTableHierarchy
    ORDER BY 
        lvl ASC
    OPTION(MAXRECURSION 0)
于 2012-11-01T16:14:17.953 に答える
-2

次の表で必要な情報を見つけることができます。

select * from sys.tables
select * from sys.foreign_keys
select * from sys.foreign_key_columns

そこから、必要に応じて実行するスクリプトを作成します。

于 2012-11-01T14:48:55.487 に答える