分享方式:


sp_foreignkeys (Transact-SQL)

適用於:SQL Server

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

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 中,這包含擁有者名稱。

[ @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 產品支援數據表的三部分命名(目錄schematable),在結果集中表示。

資料行名稱 資料類型 描述
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查詢對應至table_server之 OLE DB 提供者之 IDBSchemaRowset 介面FOREIGN_KEYS數據列集table_name、table_schematable_catalog和數據參數會傳遞至這個介面,以限制傳回的數據列。

權限

需要架構的 SELECT 許可權。

範例

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

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

另請參閱

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)