728x90
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' 에 지정한다.
이 쿼리는 지정된 테이블의 지정된 열을 참조하는 모든 외래 키를 나열한다.
반응형
'DataBase > MSSQL' 카테고리의 다른 글
[MSSQL] SQL Server 문자열 데이터 타입: `varchar`와 `nvarchar`의 차이점 및 사용 가이드 (0) | 2024.07.26 |
---|---|
[MSSQL] SQL Server에서 sa 계정을 잃어버렸을 때 복구 방법 (0) | 2024.07.20 |
[MSSQL] 테이블 내 Auto Increment(SERIAL Number) 컬럼 만들기 (0) | 2024.06.02 |
[MSSQL] 컬럼 수정시 ”Saving changes is not permitted.” 에러가 뜰경우 (0) | 2024.04.13 |
[MSSQL] 특정 Table을 사용하는 Procedure 조회하기 (0) | 2024.04.13 |