Share via


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_serversysname,沒有預設值。

[ @pktab_name = ] 'pktab_name'

這是含主索引鍵的資料表名稱。pktab_namesysname,預設值是 NULL。

[ @pktab_schema = ] 'pktab_schema'

這是含主索引鍵的結構描述名稱。pktab_schemasysname,預設值是 NULL。在 SQL Server 2005 中,這包含擁有者名稱。

[ @pktab_catalog = ] 'pktab_catalog'

這是含主索引鍵的目錄名稱。pktab_catalogsysname,預設值是 NULL。在 SQL Server 中,這包含資料庫名稱。

[ @fktab_name = ] 'fktab_name'

這是含主索引鍵的資料表名稱。fktab_namesysname,預設值是 NULL。

[ @fktab_schema = ] 'fktab_schema'

這是含外部索引鍵的結構描述名稱。fktab_schemasysname,預設值是 NULL。

[ @fktab_catalog = ] 'fktab_catalog'

這是含外部索引鍵的目錄名稱。pktab_catalogsysname,預設值是 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:

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

DEFERRABILITY

smallint

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

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

備註

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

權限

需要結構描述的 SELECT 權限。

範例

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

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

請參閱

參考

sp_catalogs (Transact-SQL)
sp_column_privileges (Transact-SQL)
sp_indexes (Transact-SQL)
sp_linkedservers (Transact-SQL)
sp_primarykeys (Transact-SQL)
sp_tables_ex (Transact-SQL)
sp_table_privileges (Transact-SQL)
系統預存程序 (Transact-SQL)

其他資源

使用者結構描述分隔

說明及資訊

取得 SQL Server 2005 協助