sp_foreignkeys (Transact-SQL)

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

トピック リンク アイコン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 2008 では、所有者名に相当します。

  • [ @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 製品において、テーブル名には 3 つの要素から成る名前 (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 プロバイダーの IDBSchemaRowset インターフェイスの FOREIGN_KEYS 行セットのクエリを実行します。table_name、table_schema、table_catalog、および column の各パラメーターは、返される行を制限するために、このインターフェイスに渡されます。

権限

スキーマに対する SELECT 権限が必要です。

次の例では、Seattle1 リンク サーバーにある AdventureWorks2008R2 データベースの Department テーブルについての外部キー情報を返します。

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