分享方式:


sp_foreignkeys (Transact-SQL)

適用於:SQL Server

傳回參考連結伺服器數據表上主鍵的外鍵。

Transact-SQL 語法慣例

語法

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

引數

[ @table_server = ] N'table_server'

要傳回數據表資訊的連結伺服器名稱。 @table_server為 sysname,沒有預設值。

[ @pktab_name = ] N'pktab_name'

具有主鍵的數據表名稱。 @pktab_name為 sysname,預設值為 NULL

[ @pktab_schema = ] N'pktab_schema'

具有主鍵的架構名稱。 @pktab_schema為 sysname,預設值為 NULL。 在 SQL Server 中,此參數包含擁有者名稱。

[ @pktab_catalog = ] N'pktab_catalog'

具有主鍵的目錄名稱。 @pktab_catalog為 sysname 預設值為 NULL。 在 SQL Server 中,此參數包含資料庫名稱。

[ @fktab_name = ] N'fktab_name'

具有外鍵的數據表名稱。 @fktab_name為 sysname 預設值為 NULL

[ @fktab_schema = ] N'fktab_schema'

具有外鍵之架構的名稱。 @fktab_schema為 sysname,預設值為 NULL

[ @fktab_catalog = ] N'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_NAMEPK_NAME 資料行一律會傳回 NULL

備註

sp_foreignkeys會查詢對應至@table_server之 OLE DB 提供者介面的FOREIGN_KEYS數據列集IDBSchemaRowset@table_name、@table_schema@table_catalog@column參數會傳遞至這個介面,以限制傳回的數據列。

權限

SELECT需要架構的許可權。

範例

下列範例會傳回連結伺服器上資料庫中資料表的AdventureWorks2022外鍵資訊DepartmentSeattle1

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