次の方法で共有


sp_foreignkeys (Transact-SQL)

適用対象: SQL Server

リンク サーバー内のテーブルの主キーを参照する外部キーを返します。

Transact-SQL 構文表記規則

構文

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

[ @pktab_name = ] N'pktab_name'

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

[ @pktab_schema = ] N'pktab_schema'

主キーを持つスキーマの名前。 @pktab_schemasysname で、既定値は NULL です。 SQL Server では、このパラメーターには所有者名が含まれています。

[ @pktab_catalog = ] N'pktab_catalog'

主キーを持つカタログの名前。 @pktab_catalogsysname で、既定値は NULL です。 SQL Server では、このパラメーターにはデータベース名が含まれています。

[ @fktab_name = ] N'fktab_name'

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

[ @fktab_schema = ] N'fktab_schema'

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

[ @fktab_catalog = ] N'fktab_catalog'

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

リターン コードの値

なし。

結果セット

さまざまなデータベース管理システム (DBMS) 製品では、結果セットで表されるテーブル (<catalog>.<schema>.<table>) の 3 部構成の名前付けがサポートされています。

列名 データ型 説明
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_schema@table_catalog、および@columnパラメーターがこのインターフェイスに渡され、返される行が制限されます。

アクセス許可

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

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

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