2017-12-02 1 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

쿼리에 this 절을 넣습니다.

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) 
관련 문제