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_serversysname で、既定値はありません。

[ @pktab_name = ] 'pktab_name' 主キーを持つテーブルの名前です。 pktab_namesysname で、既定値は NULL です。

[ @pktab_schema = ] 'pktab_schema' 主キーを持つスキーマの名前です。 pktab_schemasysname で、既定値は NULL です。 SQL Serverでは、これには所有者名が含まれます。

[ @pktab_catalog = ] 'pktab_catalog' 主キーを持つカタログの名前です。 pktab_catalogsysname で、既定値は NULL です。 SQL Serverでは、これにはデータベース名が含まれます。

[ @fktab_name = ] 'fktab_name' 外部キーを持つテーブルの名前です。 fktab_namesysname で、既定値は NULL です。

[ @fktab_schema = ] 'fktab_schema' 外部キーを持つスキーマの名前です。 fktab_schemasysname で、既定値は NULL です。

[ @fktab_catalog = ] 'fktab_catalog' 外部キーを持つカタログの名前です。 fktab_catalogsysname で、既定値は NULL です。

リターン コードの値

なし

結果セット

さまざまな DBMS 製品では、テーブル (カタログ) の 3 部構成の名前付けをサポートしています。スキーマ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 プロバイダーの IDBSchemaRowset インターフェイスのFOREIGN_KEYS行セットに対してクエリを 実行します。 table_nametable_schematable_catalog、列の各パラメーターをこのインターフェイスに渡して、返される行を制限します。

アクセス許可

スキーマに対する SELECT アクセス許可が必要です。

次の例では、Seattle1リンク サーバー上のデータベース内のDepartmentテーブルにAdventureWorks2022関する外部キー情報 を返します。

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)