DataBase/MSSQL
[MSSQL] 특정 테이블 열을 참조하는 모든 외래키를 탐색하는 방법
범데이
2024. 7. 13. 13:20
SQL Server의 특정 테이블 열을 참조하는 모든 외래 키 제약 조건을 찾으려면 시스템 카탈로그 뷰를 쿼리하면 된다.
다음은 특정 테이블의 특정 열을 참조하는 모든 외래 키 제약 조건을 보여주는 쿼리 예시이다.
DECLARE @TableName NVARCHAR(128) = '';
DECLARE @ColumnName NVARCHAR(128) = '';
SELECT
fk.name AS ForeignKeyName,
tp.name AS ParentTable,
cp.name AS ParentColumn,
tr.name AS ReferencedTable,
cr.name AS ReferencedColumn
FROM
sys.foreign_keys AS fk
INNER JOIN
sys.foreign_key_columns AS fkc ON fk.object_id = fkc.constraint_object_id
INNER JOIN
sys.tables AS tp ON fkc.parent_object_id = tp.object_id
INNER JOIN
sys.columns AS cp ON fkc.parent_object_id = cp.object_id AND fkc.parent_column_id = cp.column_id
INNER JOIN
sys.tables AS tr ON fkc.referenced_object_id = tr.object_id
INNER JOIN
sys.columns AS cr ON fkc.referenced_object_id = cr.object_id AND fkc.referenced_column_id = cr.column_id
WHERE
tr.name = @TableName AND cr.name = @ColumnName;
해당 쿼리에 대한 설명은 다음과 같다
- ‘@TableName’ 은 테이블의 이름을 지정한다.
- ‘@ColumnName’ 은 테이블의 열 이름을 지정한다.
- 쿼리는 여러 시스템 카탈로그 뷰(sys.foreign_keys, sys.foreign_key_columns, sys.tables, sys.columns)를 조인하여 지정된 테이블과 열을 참조하는 모든 외래 키를 찾는다.
- 결과에는 외래 키 이름, 상위 테이블과 열(외래키가 정의된 위치), 참조된 테이블과 열이 포함된다.
[사용방법]
위의 설명과 같이 확인하려는 실제 테이블 및 열 이름을 '@TableName', '@ColumnName' 에 지정한다.
이 쿼리는 지정된 테이블의 지정된 열을 참조하는 모든 외래 키를 나열한다.
728x90
반응형