2017-12-02 7 views
0

指定した列の主キーのみを持つテーブルを検索したい。私がしようとしているのは以下の通りです:主キーテーブルのみ

SELECT 
    OBJECT_NAME(ic.OBJECT_ID) AS TableName, 
    1 AS InsertPrimaryGuidOnly, 
    0 AS InsertCustomerOnly, 
    0 AS InsertApplicationOnly, 
    0 AS InsertNoKeyOnly 
FROM 
    sys.indexes AS i 
INNER JOIN 
    sys.index_columns AS ic ON i.OBJECT_ID = ic.OBJECT_ID 
          AND i.index_id = ic.index_id 
WHERE 
    i.is_primary_key = 1 
    AND COL_NAME(ic.OBJECT_ID, ic.column_id) = 'CREDITCHECKGUID'  
    AND OBJECT_NAME(ic.OBJECT_ID) NOT IN ('Customer', 'Application') 

私はテーブルリストを取得していますが、プライマリと外部キーとしてカラムを持つテーブルもリストしています。私が欲しいのはプライマリキーテーブルだけです。プライマリが外部キーでもある場合、私はそのテーブルをリストダウンしたくありません。助けてください。

答えて

0

このwhere句をクエリに入れます。

AND ic.OBJECT_ID NOT IN (select parent_object_id from sys.foreign_keys fk) 

完全なクエリ。

SELECT 
    ic.OBJECT_ID, 
    OBJECT_NAME(ic.OBJECT_ID) AS TableName, 
    1 AS InsertPrimaryGuidOnly, 
    0 AS InsertCustomerOnly, 
    0 AS InsertApplicationOnly, 
    0 AS InsertNoKeyOnly 
FROM 
    sys.indexes AS i 
INNER JOIN 
    sys.index_columns AS ic ON i.OBJECT_ID = ic.OBJECT_ID 
          AND i.index_id = ic.index_id 
WHERE 
    i.is_primary_key = 1 
    AND COL_NAME(ic.OBJECT_ID, ic.column_id) = 'CREDITCHECKGUID' 
    AND OBJECT_NAME(ic.OBJECT_ID) NOT IN ('Customer', 'Application') 
    AND ic.OBJECT_ID NOT IN (select parent_object_id from sys.foreign_keys fk) 
関連する問題