2

TableC# コードでSql サーバーの関係 (または外部キー) を取得したいと考えています。これどうやってするの?ありがとうございました

4

1 に答える 1

3

dbo.YourTableNameこれにより、参照するすべての外部キーが取得されます。

SELECT 
    FK = OBJECT_NAME(pt.constraint_object_id),
    Referencing_col = pc.name, 
    Referenced_col = rc.name
FROM sys.foreign_key_columns AS pt
INNER JOIN sys.columns AS pc
ON pt.parent_object_id = pc.[object_id]
AND pt.parent_column_id = pc.column_id
INNER JOIN sys.columns AS rc
ON pt.referenced_column_id = rc.column_id
AND pt.referenced_object_id = rc.[object_id]
WHERE pt.parent_object_id = OBJECT_ID('dbo.YourTableName');

を参照するすべての外部キーを取得する場合はdbo.YourTableName、わずかに異なります。

SELECT 
    -- add these two columns:
    [Schema] = OBJECT_SCHEMA_NAME(pt.parent_object_id),
    [Table] = OBJECT_NAME(pt.parent_object_id),
    FK = OBJECT_NAME(pt.constraint_object_id),
    Referencing_col = pc.name, 
    Referenced_col = rc.name
FROM sys.foreign_key_columns AS pt
INNER JOIN sys.columns AS pc
ON pt.parent_object_id = pc.[object_id]
AND pt.parent_column_id = pc.column_id
INNER JOIN sys.columns AS rc
ON pt.referenced_column_id = rc.column_id
AND pt.referenced_object_id = rc.[object_id]
WHERE pt.referenced_object_id = OBJECT_ID('dbo.YourTableName');
---------^^^^^^^^^^ change this

これをストアド プロシージャに入れ、OBJECT_ID関数に渡す 2 部構成の名前をパラメーター化し、C# コードからストアド プロシージャを呼び出すことができます。

于 2012-06-22T18:05:49.237 に答える