다음을 통해 공유


sp_fkeys(Transact-SQL)

현재 환경에 대한 논리적 외래 키 정보를 반환합니다. 이 프로시저는 사용할 수 없는 외래 키를 포함한 외래 키 관계를 보여 줍니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

sp_fkeys [ @pktable_name = ] 'pktable_name' 
     [ , [ @pktable_owner = ] 'pktable_owner' ] 
     [ , [ @pktable_qualifier = ] 'pktable_qualifier' ] 
     { , [ @fktable_name = ] 'fktable_name' } 
     [ , [ @fktable_owner = ] 'fktable_owner' ] 
     [ , [ @fktable_qualifier = ] 'fktable_qualifier' ]

인수

  • [ @pktable_name = ] 'pktable_name'
    카탈로그 정보를 반환하는 데 사용하는 기본 키가 있는 테이블 이름입니다. pktable_name은 sysname이며 기본값은 NULL입니다. 와일드카드 패턴 일치는 지원되지 않습니다. 이 매개 변수나 fktable_name 매개 변수 또는 둘 다를 반드시 제공해야 합니다.

  • [ @pktable_owner = ] 'pktable_owner'
    카탈로그 정보를 반환하는 데 사용되는 기본 키가 있는 테이블의 소유자 이름입니다. pktable_owner는 sysname이며 기본값은 NULL입니다. 와일드카드 패턴 일치는 지원되지 않습니다. pktable_owner를 지정하지 않은 경우 기본 DBMS의 기본 테이블 표시 규칙이 적용됩니다.

    SQL Server에서는 현재 사용자가 지정된 이름의 테이블을 소유하고 있는 경우 해당 테이블의 열이 반환됩니다. pktable_owner가 지정되지 않았고 현재 사용자가 지정된 pktable_name의 테이블을 소유하고 있지 않은 경우 이 프로시저는 데이터베이스 소유자가 소유한 지정된 pktable_name의 테이블을 찾습니다. 테이블이 있으면 테이블의 열이 반환됩니다.

  • [ @pktable_qualifier = ] 'pktable_qualifier'
    기본 키가 있는 테이블 한정자의 이름입니다. pktable_qualifier는 sysname이며 기본값은 NULL입니다. 다양한 DBMS 제품에서 테이블에 대해 세 부분으로 구성된 이름(qualifier.owner.name)을 지원합니다. SQL Server에서 이 한정자는 데이터베이스 이름을 나타냅니다. 일부 제품에서는 테이블 데이터베이스 환경의 서버 이름을 나타냅니다.

  • [ @fktable_name = ] 'fktable_name'
    카탈로그 정보를 반환하는 데 사용되는 외래 키가 있는 테이블 이름입니다. fktable_name은 sysname이며 기본값은 NULL입니다. 와일드카드 패턴 일치는 지원되지 않습니다. 이 매개 변수나 pktable_name 매개 변수 또는 둘 다를 반드시 제공해야 합니다.

  • [ @fktable_owner = ] 'fktable_owner'
    카탈로그 정보를 반환하는 데 사용되는 외래 키가 있는 테이블의 소유자 이름입니다. fktable_owner는 sysname이며 기본값은 NULL입니다. 와일드카드 패턴 일치는 지원되지 않습니다. fktable_owner를 지정하지 않은 경우 기본 DBMS의 기본 테이블 표시 규칙이 적용됩니다.

    SQL Server에서는 현재 사용자가 지정한 이름의 테이블을 소유하고 있는 경우 해당 테이블의 열이 반환됩니다. fktable_owner가 지정되지 않았고 현재 사용자가 지정된 fktable_name의 테이블을 소유하고 있지 않은 경우 이 프로시저는 데이터베이스 소유자가 소유한 지정된 fktable_name의 테이블을 찾습니다. 테이블이 있으면 테이블의 열이 반환됩니다.

  • [ @fktable_qualifier =] '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 작업이 업데이트일 때 외래 키에 적용되는 동작입니다. SQL Server에서는 다음과 같은 열에 대해 0 또는 1을 반환합니다.

0=CASCADE는 외래 키를 변경합니다.

1=NO ACTION은 외래 키가 있으면 변경합니다.

2=SET_NULL은 외래 키를 NULL로 설정합니다.

DELETE_RULE

smallint

SQL 작업이 삭제일 때 외래 키에 적용되는 동작입니다. SQL Server에서는 다음과 같은 열에 대해 0 또는 1을 반환합니다.

0=CASCADE. 외래 키로 변경됩니다.

1=NO ACTION. 외래 키가 있을 경우 변경됩니다.

2=SET_NULL. 외래 키를 NULL로 설정합니다.

FK_NAME

sysname

외래 키 식별자입니다. 데이터 원본에 적용할 수 없는 경우 NULL입니다. SQL Server는 FOREIGN KEY 제약 조건 이름을 반환합니다.

PK_NAME

sysname

기본 키 식별자입니다. 데이터 원본에 적용할 수 없는 경우 NULL입니다. SQL Server는 PRIMARY KEY 제약 조건 이름을 반환합니다.

반환된 결과는 FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAMEKEY_SEQ 순으로 정렬됩니다.

주의

외래 키를 사용할 수 없는 테이블을 포함하는 응용 프로그램 코딩은 다음과 같은 방법으로 구현됩니다.

  • 테이블에 관한 작업을 하는 동안 제약 조건 확인(ALTER TABLE NOCHECK 또는 CREATE TABLE NOT FOR REPLICATION)을 일시적으로 사용하지 못하게 한 다음 나중에 다시 사용할 수 있도록 합니다. NOT FOR REPLICATION 옵션에 대한 자세한 내용은 NOT FOR REPLICATION으로 제약 조건, ID 및 트리거 제어를 참조하십시오.

  • 트리거 또는 응용 프로그램 코드를 사용하여 강제로 연결합니다.

기본 키 테이블 이름은 제공되고 외래 키 테이블 이름이 NULL인 경우 sp_fkeys는 외래 키를 포함한 모든 테이블을 지정된 테이블로 반환합니다. 외래 키 테이블 이름은 제공되고 기본 키 테이블 이름이 NULL인 경우 sp_fkeys는 외래 키 테이블의 외래 키에 기본 키/외래 키 관계로 연관된 모든 테이블을 반환합니다.

sp_fkeys 저장 프로시저는 ODBC에서 SQLForeignKeys와 같습니다.

사용 권한

스키마에 대한 SELECT 권한이 필요합니다.

다음 예에서는 AdventureWorks 데이터베이스의 HumanResources.Department 테이블에 대한 외래 키 목록을 검색합니다.

USE AdventureWorks;
GO
EXEC sp_fkeys @pktable_name = N'Department'
    ,@pktable_owner = N'HumanResources'