적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
분석 플랫폼 시스템(PDW)
Microsoft Fabric
의 웨어하우스Microsoft Fabric의 SQL 데이터베이스
현재 환경에 대한 논리적 외래 키 정보를 반환합니다. 이 절차에서는 사용하지 않도록 설정된 외래 키를 비롯한 외래 키 관계를 보여줍니다.
구문
sp_fkeys
[ [ @pktable_name = ] N'pktable_name' ]
[ , [ @pktable_owner = ] N'pktable_owner' ]
[ , [ @pktable_qualifier = ] N'pktable_qualifier' ]
[ , [ @fktable_name = ] N'fktable_name' ]
[ , [ @fktable_owner = ] N'fktable_owner' ]
[ , [ @fktable_qualifier = ] N'fktable_qualifier' ]
[ ; ]
인수
[ @pktable_name = ] N'pktable_name'
카탈로그 정보를 반환하는 데 사용되는 기본 키가 있는 테이블의 이름입니다.
@pktable_name sysname이며 기본값은 .입니다NULL. 와일드카드 패턴 일치는 지원되지 않습니다. 이 매개 변수 또는 @fktable_name 매개 변수 또는 둘 다를 제공해야 합니다.
[ @pktable_owner = ] N'pktable_owner'
카탈로그 정보를 반환하는 데 사용되는 테이블 소유자의 이름(기본 키 포함)입니다.
@pktable_owner sysname이며 기본값은 .입니다NULL. 와일드카드 패턴 일치는 지원되지 않습니다. @pktable_owner 지정되지 않은 경우 기본 DBMS(데이터베이스 관리 시스템)의 기본 테이블 표시 유형 규칙이 적용됩니다.
SQL Server에서 현재 사용자가 지정된 이름의 테이블을 소유하는 경우 해당 테이블의 열이 반환됩니다. @pktable_owner 지정되지 않고 현재 사용자가 지정된 @pktable_name 있는 테이블을 소유하지 않는 경우 프로시저는 데이터베이스 소유자가 소유한 지정된 @pktable_name 있는 테이블을 찾습니다. 테이블 열이 있으면 해당 테이블의 열이 반환됩니다.
[ @pktable_qualifier = ] N'pktable_qualifier'
테이블의 이름(기본 키 포함) 한정자입니다.
@pktable_qualifier sysname이며 기본값은 .입니다NULL. 다양한 DBMS 제품은 테이블(qualifier.owner.name)에 대해 세 부분으로 구성된 명명을 지원합니다. SQL Server에서 한정자는 데이터베이스 이름을 나타냅니다. 일부 제품에서는 테이블 데이터베이스 환경의 서버 이름을 나타냅니다.
[ @fktable_name = ] N'fktable_name'
카탈로그 정보를 반환하는 데 사용되는 테이블의 이름(외래 키 포함)입니다.
@fktable_name sysname이며 기본값은 .입니다NULL. 와일드카드 패턴 일치는 지원되지 않습니다. 이 매개 변수 또는 @pktable_name 매개 변수 또는 둘 다를 제공해야 합니다.
[ @fktable_owner = ] N'fktable_owner'
카탈로그 정보를 반환하는 데 사용되는 테이블 소유자의 이름(외래 키 포함)입니다.
@fktable_owner sysname이며 기본값은 .입니다NULL. 와일드카드 패턴 일치는 지원되지 않습니다. @fktable_owner 지정하지 않으면 기본 DBMS의 기본 테이블 표시 유형 규칙이 적용됩니다.
SQL Server에서 현재 사용자가 지정된 이름의 테이블을 소유하는 경우 해당 테이블의 열이 반환됩니다. @fktable_owner 지정되지 않았고 현재 사용자가 지정된 @fktable_name 있는 테이블을 소유하지 않는 경우 프로시저는 데이터베이스 소유자가 소유한 지정된 @fktable_name 있는 테이블을 찾습니다. 테이블 열이 있으면 해당 테이블의 열이 반환됩니다.
[ @fktable_qualifier = ] N'fktable_qualifier'
외래 키가 있는 테이블의 한정자 이름입니다.
@fktable_qualifier sysname이며 기본값은 .입니다NULL. SQL Server에서 한정자는 데이터베이스 이름을 나타냅니다. 일부 제품에서는 테이블 데이터베이스 환경의 서버 이름을 나타냅니다.
반환 코드 값
없음
결과 집합
| 열 이름 | 데이터 형식 | 설명 |
|---|---|---|
PKTABLE_QUALIFIER |
sysname | 테이블의 이름(기본 키 포함) 한정자입니다. 이 필드는 다음과 같습니다 NULL. |
PKTABLE_OWNER |
sysname | 기본 키가 있는 테이블의 소유자 이름입니다. 이 필드는 항상 값을 반환합니다. |
PKTABLE_NAME |
sysname | 기본 키가 있는 테이블의 이름입니다. 이 필드는 항상 값을 반환합니다. |
PKCOLUMN_NAME |
sysname | 반환된 각 열에 대한 기본 키 열의 TABLE_NAME 이름입니다. 이 필드는 항상 값을 반환합니다. |
FKTABLE_QUALIFIER |
sysname | 외래 키가 있는 테이블의 한정자 이름입니다. 이 필드는 다음과 같습니다 NULL. |
FKTABLE_OWNER |
sysname | 외래 키가 있는 테이블 소유자의 이름입니다. 이 필드는 항상 값을 반환합니다. |
FKTABLE_NAME |
sysname | 외래 키가 있는 테이블의 이름입니다. 이 필드는 항상 값을 반환합니다. |
FKCOLUMN_NAME |
sysname | 반환된 각 열에 대한 외래 키 열의 TABLE_NAME 이름입니다. 이 필드는 항상 값을 반환합니다. |
KEY_SEQ |
smallint | 여러 열 기본 키에 있는 열의 시퀀스 번호입니다. 이 필드는 항상 값을 반환합니다. |
UPDATE_RULE |
smallint | SQL 작업이 업데이트일 때 외래 키에 적용되는 동작입니다. 가능한 값:0
=
CASCADE 외래 키를 변경합니다.1
=
NO ACTION 외래 키가 있으면 변경합니다.2 = SET_NULL3 = 기본값 설정 |
DELETE_RULE |
smallint | SQL 작업이 삭제되면 외래 키에 적용된 작업입니다. 가능한 값:0
=
CASCADE 외래 키를 변경합니다.1
=
NO ACTION 외래 키가 있으면 변경합니다.2 = SET_NULL3 = 기본값 설정 |
FK_NAME |
sysname | 외래 키 식별자입니다. 데이터 원본에 NULL 적용되지 않는 경우입니다. SQL Server는 제약 조건 FOREIGN KEY 이름을 반환합니다. |
PK_NAME |
sysname | 기본 키 식별자입니다. 데이터 원본에 NULL 적용되지 않는 경우입니다. SQL Server는 제약 조건 PRIMARY KEY 이름을 반환합니다. |
반환된 결과는 , FKTABLE_QUALIFIER, FKTABLE_OWNER및 FKTABLE_NAME.로 KEY_SEQ정렬됩니다.
설명
외화 키가 비활성화된 테이블을 포함하는 애플리케이션 코딩은 다음 방법으로 구현할 수 있습니다.
테이블을 사용하는 동안 제약 조건 검사(
ALTER TABLE NOCHECK또는CREATE TABLE NOT FOR REPLICATION)를 일시적으로 사용하지 않도록 설정한 다음 나중에 다시 사용하도록 설정합니다.트리거 또는 애플리케이션 코드를 사용하여 관계를 적용합니다.
기본 키 테이블 이름이 제공되고 외래 키 테이블 이름이면 NULLsp_fkeys 지정된 테이블에 외래 키가 포함된 모든 테이블을 반환합니다. 외래 키 테이블 이름이 제공되고 기본 키 테이블 이름이면 NULLsp_fkeys 외래 키 테이블의 외래 키에 대한 기본 키/외래 키 관계와 관련된 모든 테이블을 반환합니다.
sp_fkeys 저장 프로시저는 ODBC의 SQLForeignKeys와 동일합니다.
사용 권한
스키마에 SELECT 대한 권한이 필요합니다.
예제
다음 예제에서는 데이터베이스의 테이블에 HumanResources.Department 대한 AdventureWorks2025 외세 키 목록을 검색합니다.
USE AdventureWorks2022;
GO
EXECUTE sp_fkeys
@pktable_name = N'Department',
@pktable_owner = N'HumanResources';
예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)
다음 예제에서는 데이터베이스의 테이블에 DimDate 대한 AdventureWorksPDW2012 외세 키 목록을 검색합니다. Azure Synapse Analytics는 외세 키를 지원하지 않으므로 행이 반환되지 않습니다.
EXECUTE sp_fkeys @pktable_name = N'DimDate';