SQL-빠른 팁 #8 - 외래 키 제약 조건 찾기

5182 단어 sqlmssqlsqlservertsql

SQL Server 팁과 요령



이것은 제가 1년 동안 축적한 일련의 빠른 팁과 요령 중 일부이며 다른 사람들에게 유용할 수 있다고 생각합니다.
비슷한 짧은 팁과 요령이 있으면 의견을 남겨주세요.

모든 외래 키 제약 조건



잘 설계된 데이터베이스는 데이터 무결성을 보장하기 위해 외래 키 관계를 사용하여 테이블을 서로 연결합니다. 그러나 데이터베이스에 수백 또는 수천 개의 테이블이 있는 경우 수정해야 할 특정 테이블과 관련된 모든 테이블을 찾는 것이 어려울 수 있습니다.
아래 쿼리는 특정 열 이름을 가진 열 사이의 모든 외래 키 제약 조건을 찾습니다.

DECLARE @colname VARCHAR(200) = 'customer'

SELECT fk_tab.name as [table],    
       pk_columns.name as colname,
       pk_tab.name as [fk_table],
       fk_columns.name as fk_colname
  FROM sys.foreign_keys fk
  JOIN sys.tables fk_tab on fk_tab.object_id = fk.parent_object_id
  JOIN sys.tables pk_tab on pk_tab.object_id = fk.referenced_object_id
  JOIN sys.foreign_key_columns fk_cols on fk_cols.constraint_object_id = fk.object_id
  JOIN sys.columns fk_columns ON fk_columns.object_id = fk_cols.referenced_object_id 
       AND fk_columns.column_id = fk_cols.referenced_column_id
  JOIN sys.columns pk_columns ON pk_columns.object_id = fk_cols.parent_object_id
       AND pk_columns.column_id = fk_cols.parent_column_id
 WHERE fk_columns.name LIKE '%'+ @colname +'%' OR pk_columns.name LIKE '%'+ @colname +'%'
 ORDER BY pk_tab.name


아래Northwind 예에서 CustomerCustomerDemo 테이블의 CustomerTypeID 열에 CustomerDemographics 테이블의 기본 키 열 CustomerTypeID에 대한 외래 키 관계가 있음을 알 수 있습니다.

좋은 웹페이지 즐겨찾기