sp_fkeys sp_fkeys - 北京怡康軟件科技有限公司 資源網(wǎng) "/>
返回當(dāng)前環(huán)境的邏鍵外鍵信息。該過程顯示各種外鍵關(guān)系,包括禁用的外鍵。
sp_fkeys [ @pktable_name = ] 'pktable_name'
[ , [ @pktable_owner = ] 'pktable_owner' ]
[ , [ @pktable_qualifier = ] 'pktable_qualifier' ]
{ , [ @fktable_name = ] 'fktable_name' }
[ , [ @fktable_owner = ] 'fktable_owner' ]
[ , [ @fktable_qualifier = ] 'fktable_qualifier' ]
[@pktable_name =] 'pktable_name'
是表的名稱(該表帶有主鍵),使用該表返回目錄信息。pktable_name 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。不支持通配符模式匹配。必須提供這個參數(shù)或 fktable_name 參數(shù),或者同時提供二者。
[@pktable_owner =] 'pktable_owner'
表所有者的名稱(該表帶有主鍵),使用該表返回目錄信息。pktable_owner 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。不支持通配符模式匹配。如果沒有指定 pktable_owner,則采用基礎(chǔ) DBMS 默認(rèn)的表可視性規(guī)則。
在 Microsoft® SQL Server™ 中,如果當(dāng)前用戶擁有的表具有指定名稱,則返回該表的列。如果沒有指定 pktable_owner,而且當(dāng)前用戶沒有帶有指定的 pktable_name 的表,那么該過程便查找數(shù)據(jù)庫所有者所擁有的表,看看其中是否有某個表帶有指定的 pktable_name。如果有,則返回該表的列。
[@pktable_qualifier =] 'pktable_qualifier'
是表限定符的名稱(該表帶有主鍵)。pktable_qualifier 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。多種 DBMS 產(chǎn)品支持表的三部分命名方式 (qualifier.owner.name)。在 SQL Server 中,該限定符表示數(shù)據(jù)庫名稱。在某些產(chǎn)品中,該列表示表所在數(shù)據(jù)庫環(huán)境的服務(wù)器名。
[@fktable_name =] 'fktable_name'
是表的名稱(該表帶有外鍵),使用該表返回目錄信息。fktable_name 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。不支持通配符模式匹配。必須提供這個參數(shù)或 pktable_name 參數(shù),或者同時提供二者。
[@fktable_owner =] 'fktable_owner'
是表所有者的名稱(該表帶有外鍵),使用該表返回目錄信息。fktable_owner 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。不支持通配符模式匹配。如果沒有指定 fktable_owner,則采用基礎(chǔ) DBMS 默認(rèn)的表可視性規(guī)則。
在 SQL Server 中,如果當(dāng)前用戶擁有一個帶有指定名稱的表,那么就返回該表的列。如果沒有指定 fktable_owner,并且當(dāng)前用戶沒有帶有指定的 fktable_name 的表,那么該過程就查找數(shù)據(jù)庫所有者所擁有的表,看看其中是否有某個表帶有指定的 fktable_name。如果有,則返回該表的列。
[@fktable_qualifier =] 'fktable_qualifier'
是表限定符的名稱(該表帶有外鍵)。fktable_qualifier 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。在 SQL Server 中,該限定符表示數(shù)據(jù)庫名稱。在某些產(chǎn)品中,該列表示表所在數(shù)據(jù)庫環(huán)境的服務(wù)器名。
無
列名 | 數(shù)據(jù)類型 | 描述 |
---|---|---|
PKTABLE_QUALIFIER | sysname | 表限定符的名稱(該表帶有主鍵)。該字段可以為 NULL。 |
PKTABLE_OWNER | sysname | 表所有者的名稱(該表帶有主鍵)。該字段始終返回值。 |
PKTABLE_NAME | sysname | 表的名稱(該表帶有主鍵)。該字段始終返回值。 |
PKCOLUMN_NAME | sysname | 主鍵列的名稱,針對返回的 TABLE_NAME 的每個列。該字段始終返回值。 |
FKTABLE_QUALIFIER | sysname | 表限定符的名稱(該表帶有外鍵)。該字段可以為 NULL。 |
FKTABLE_OWNER | sysname | 表所有者的名稱(該表帶有外鍵)。該字段始終返回值。 |
FKTABLE_NAME | sysname | 表的名稱(該表帶有外鍵)。該字段始終返回值。 |
FKCOLUMN_NAME | varchar(32) | 外鍵列的名稱,針對返回的 TABLE_NAME 的每個列。該字段始終返回值。 |
KEY_SEQ | smallint | 多列主鍵中列的序列號。該字段始終返回值。 |
UPDATE_RULE | smallint | 當(dāng) SQL 操作是更新時,應(yīng)用于外鍵的動作。SQL Server 為這些列返回 0 或 1。開放數(shù)據(jù)服務(wù)網(wǎng)關(guān)可返回值 0、1 或 2: 0= 對外鍵的 CASCADE 修改。 |
DELETE_RULE | smallint | 當(dāng) SQL 操作是刪除時,應(yīng)用于外鍵的動作。SQL Server 為這些列返回 0 或 1。開放數(shù)據(jù)服務(wù)網(wǎng)關(guān)可返回值 0、1 或 2: 0= 對外鍵的 CASCADE 修改。 |
FK_NAME | sysname | 外鍵標(biāo)識符。如果對數(shù)據(jù)源不可用,則其為 NULL。SQL Server 返回 FOREIGN KEY 約束名。 |
PK_NAME | sysname | 主鍵標(biāo)識符。如果對數(shù)據(jù)源不可用,則其為 NULL。SQL Server 返回 PRIMARY KEY 約束名。 |
返回的結(jié)果集按 FKTABLE_QUALIFIER、FKTABLE_OWNER、FKTABLE_NAME 及 KEY_SEQ 排序。
如果應(yīng)用程序編碼中包含某些表,而這些表帶有禁用的外鍵,那么可以通過如下方法實現(xiàn)應(yīng)用程序編碼:
如果提供了主鍵表名,而外鍵表名為 NULL,那么 sp_fkeys 將返回所有這樣的表:該表包含指向給定的表的外鍵。如果提供了外鍵表名,而主鍵表名為 NULL,那么 sp_fkeys 將返回所有這樣的表:該表通過主鍵/外鍵關(guān)系與外鍵表中的外鍵相關(guān)聯(lián)。
sp_fkeys 存儲過程等價于 ODBC 中的 SQLForeignKeys。
執(zhí)行權(quán)限默認(rèn)授予 public 角色。
下面的示例為 Northwind 數(shù)據(jù)庫中的 Customers 表檢索一個外鍵的列表。
USE Northwind
EXEC sp_fkeys @pktable_name = N'Customers'
相關(guān)文章