2016-08-19 7 views
1

나는 외래 키 제약 조건 목록을 얻으려면 어떻게합니까?

EXEC sp_fkeys 'TableName' 

를 사용하여 지정된 테이블 이름과 외래 키 제약 조건의 목록을 얻을 수 있습니다하지만 다른 테이블에는 외래 키 제약 조건이없는 모든 테이블의 목록을 얻을 필요가있다.

미리 감사드립니다.

+0

무엇을? 나는 명확하지 않다! – techspider

+0

혼란을 드려 죄송합니다. 나는 내용을 편집했고, 지금 그것이 의미가 있기를 바란다. – JackTheRipper

답변

1

이 쿼리는 아래의 당신에게 외래 키

SELECT s.name [Schema], t.name [Table] 
FROM sys.tables AS t 
INNER JOIN sys.schemas AS s 
    ON t.[schema_id] = s.[schema_id] 
WHERE NOT EXISTS (SELECT 
    1 
FROM sys.foreign_keys AS fk 
WHERE fk.parent_object_id = t.[object_id]); 

이 논리는 this site에 게시 관련 쿼리 집합으로부터 영감이없는 모든 테이블을 제공합니다.

+0

정말 고마워요! 매우 유용한 웹 사이트, 나는 그것을 확실히 북마크합니다. – JackTheRipper

0

여기에는 EXCEPT를 사용하는 또 다른 옵션이 있습니다.

select name 
from sys.tables 
except 
(
    select OBJECT_NAME(parent_object_id) 
    from sys.foreign_keys 
) 
order by name 
+0

이것은 또한 작동합니다. @Sean에게 감사합니다. – JackTheRipper

+0

내가 한 일은 예고했다. 여러 스키마에서 동일한 이름을 사용하면 테이블을 올바르게 식별하지 못합니다. 이러한 테이블 중 하나에 외래 키가 있고 다른 테이블에이 쿼리가 반환되지 않은 경우. –

+0

신고 해 주셔서 감사합니다. 나는 하나의 스키마로 작업 중이므로 지금은 효과가있다. 나는 미래에 대한 나의 마음에 그것을 지킬 것이다. – JackTheRipper