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

[ @pktab_name = ] 'pktab_name'

主キーが設定されたテーブルの名前です。pktab_namesysname であり、既定値は NULL です。

[ @pktab_schema = ] 'pktab_schema'

主キーが設定されたスキーマの名前です。pktab_schemasysname であり、既定値は NULL です。SQL Server 2005 では、所有者名に相当します。

[ @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 つの要素から成る名前 (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 を返します。

0=CASCADE: 外部キーを変更します。

1=NO ACTION: 外部キーが存在する場合には変更します。

2=SET_NULL: 外部キーを NULL に設定します。

DELETE_RULE

smallint

SQL の操作が削除であるとき、外部キーに適用される動作です。SQL Server はこれらの列に 0 または 1 を返します。

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、および column の各パラメータは、返される行を制限するために、このインターフェイスに渡されます。

権限

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

戻り値

ありません。

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

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

参照

関連項目

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)

その他の技術情報

ユーザーとスキーマの分離

ヘルプおよび情報

SQL Server 2005 の参考資料の入手