sp_foreignkeys (Transact-SQL)
適用於:SQL Server
傳回參考連結伺服器數據表上主鍵的外鍵。
語法
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_NAME
和 PK_NAME
資料行一律會傳回 NULL
。
備註
sp_foreignkeys
會查詢對應至@table_server之 OLE DB 提供者介面的FOREIGN_KEYS數據列集IDBSchemaRowset
。 @table_name、@table_schema、@table_catalog和@column參數會傳遞至這個介面,以限制傳回的數據列。
權限
SELECT
需要架構的許可權。
範例
下列範例會傳回連結伺服器上資料庫中資料表的AdventureWorks2022
外鍵資訊Department
。 Seattle1
EXEC sp_foreignkeys @table_server = N'Seattle1',
@pktab_name = N'Department',
@pktab_catalog = N'AdventureWorks2022';