sp_foreignkeys (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 產品都支援資料表的三部分命名 (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 之 AdventureWorks2012 資料庫中 Department 資料表的外部索引鍵資訊。
EXEC sp_foreignkeys @table_server = N'Seattle1',
@pktab_name = N'Department',
@pktab_catalog = N'AdventureWorks2012';
請參閱
參考
sp_column_privileges (Transact-SQL)
sp_linkedservers (Transact-SQL)