sp_foreignkeys (Transact-SQL)

傳回外部索引鍵,這個外部索引鍵參考連結伺服器中之資料表上的主索引鍵。

主題連結圖示Transact-SQL 語法慣例

語法

sp_foreignkeys [ @table_server = ] 'table_server' 
     [ , [ @pktab_name = ] 'pktab_name' ] 
     [ , [ @pktab_schema = ] 'pktab_schema' ] 
     [ , [ @pktab_catalog = ] 'pktab_catalog' ] 
     [ , [ @fktab_name = ] 'fktab_name' ] 
     [ , [ @fktab_schema = ] 'fktab_schema' ] 
     [ , [ @fktab_catalog = ] 'fktab_catalog' ]

引數

  • [ @table_server = ] 'table_server'
    這是傳回資料表資訊所屬的連結伺服器名稱。table_server 是 sysname,沒有預設值。

  • [ @pktab_name = ] 'pktab_name'
    這是含主索引鍵的資料表名稱。pktab_name 是 sysname,預設值是 NULL。

  • [ @pktab_schema = ] 'pktab_schema'
    這是含主索引鍵的結構描述名稱。pktab_schema 是 sysname,預設值是 NULL。在 SQL Server 2008 中,這包含擁有者名稱。

  • [ @pktab_catalog = ] 'pktab_catalog'
    這是含主索引鍵的目錄名稱。pktab_catalog 是 sysname,預設值是 NULL。在 SQL Server 中,這包含資料庫名稱。

  • [ @fktab_name = ] 'fktab_name'
    這是含主索引鍵的資料表名稱。fktab_name 是 sysname,預設值是 NULL。

  • [ @fktab_schema = ] 'fktab_schema'
    這是含外部索引鍵的結構描述名稱。fktab_schema 是 sysname,預設值是 NULL。

  • [ @fktab_catalog = ] 'fktab_catalog'
    這是含外部索引鍵的目錄名稱。fktab_catalog 是 sysname,預設值是 NULL。

傳回碼值

結果集

各種 DBMS 產品都支援資料表的三部分命名 (catalog**.schema.**table),它會呈現在結果集中。

資料行名稱

資料類型

描述

PKTABLE_CAT

sysname

主索引鍵所在之資料表的目錄。

PKTABLE_SCHEM

sysname

主索引鍵所在之資料表的結構描述。

PKTABLE_NAME

sysname

資料表 (含主索引鍵) 的名稱。這個欄位一律會傳回值。

PKCOLUMN_NAME

sysname

針對傳回之 TABLE_NAME 的每個資料行而言,這是主索引鍵資料行的名稱。這個欄位一律會傳回值。

FKTABLE_CAT

sysname

外部索引鍵所在之資料表的目錄。

FKTABLE_SCHEM

sysname

外部索引鍵所在之資料表的結構描述。

FKTABLE_NAME

sysname

資料表 (含外部索引鍵) 的名稱。這個欄位一律會傳回值。

FKCOLUMN_NAME

sysname

針對傳回之 TABLE_NAME 的每個資料行而言,這是外部索引鍵資料行的名稱。這個欄位一律會傳回值。

KEY_SEQ

smallint

資料行在多重資料行主索引鍵中的序號。這個欄位一律會傳回值。

UPDATE_RULE

smallint

當 SQL 作業是更新時,外部索引鍵所套用的動作。SQL Server 會針對這些資料行傳回 0、1 或 2:

0=外部索引鍵的 CASCADE 變更。

1=如果外部索引鍵存在,則是 NO ACTION 變更。

2=SET_NULL;將外部索引鍵設為 NULL。

DELETE_RULE

smallint

當 SQL 作業是刪除時,外部索引鍵所套用的動作。SQL Server 會針對這些資料行傳回 0、1 或 2:

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 條件約束名稱。

DEFERRABILITY

smallint

指出條件約束檢查是否可以延後。

在結果集中,FK_NAME 和 PK_NAME 資料行一律傳回 NULL。

備註

sp_foreignkeys 會查詢 OLE DB 提供者之 IDBSchemaRowset 介面的 FOREIGN_KEYS 資料列集,該 OLE DB 提供者可對應於 table_server。table_name、table_schema、table_catalog 及 column 參數會傳遞給這個介面來限制傳回的資料列。

權限

需要結構描述的 SELECT 權限。

範例

下列範例會傳回有關連結伺服器 Seattle1 之 AdventureWorks2008R2 資料庫中 Department 資料表的外部索引鍵資訊。

EXEC sp_foreignkeys @table_server = N'Seattle1', 
   @pktab_name = N'Department', 
   @pktab_catalog = N'AdventureWorks2008R2';