0

多くの外部キー制約を持つ約 200 のテーブルを持つデータベースがあります。データベースにデータがなく、指定したテーブルに行を挿入する必要がありますX

多くの外部キーがあるため、 table に挿入できるように他のテーブルに挿入する方法の順序がわかりませんX。一部の外部キー制約は階層的です。

table にデータを正常に挿入できるように、挿入の順序を確認するにはどうすればよいXですか? 役立つ SQL クエリはありますか?

編集 ツリービューを表示し、そこから選択できる列 "TableName" 、 "ParentTableDependece" を持つテーブルが必要です

4

3 に答える 3

2

このスニペットを使用すると、自分のテーブルを参照する関連する他のすべてのテーブルと外部キーを見つけることができますX

;WITH ReferencingFK AS 
(
    SELECT 
        fk.Name AS 'FKName',
        OBJECT_NAME(fk.parent_object_id) 'ParentTable',
        cpa.name 'ParentColumnName',
        OBJECT_NAME(fk.referenced_object_id) 'ReferencedTable',
        cref.name 'ReferencedColumnName'
    FROM 
        sys.foreign_keys fk
    INNER JOIN 
        sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
    INNER JOIN 
        sys.columns cpa ON fkc.parent_object_id = cpa.object_id AND fkc.parent_column_id = cpa.column_id
    INNER JOIN 
        sys.columns cref ON fkc.referenced_object_id = cref.object_id AND fkc.referenced_column_id = cref.column_id
)
SELECT 
    FKName,
    ParentTable,
    ParentColumnName,
    ReferencedTable,
    ReferencedColumnName
FROM 
    ReferencingFK
WHERE
    ReferencedTable = 'X'   --  <=== put your table name here!
ORDER BY 
    ParentTable, ReferencedTable, FKName

を参照するすべてのテーブルを取得しXたら、他のテーブルについてもこれを繰り返す必要がある場合があります (それらが外部キー参照に依存している場合)。

于 2013-04-08T05:52:12.430 に答える
1

あなたが試すことができます:

EXEC sp_help 'TableName'

これにより、テーブルの詳細全体が得られます。つまり、リレーション、インデックス、および渡すオブジェクトに関連するその他の情報を取得できます。

于 2013-04-08T06:18:45.203 に答える
1

なぜこれではないのですか?

EXEC sp_msdependencies @objname = 'X'

ラージ

于 2013-04-08T06:40:16.973 に答える