sp_foreignkeys (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 2005 では、所有者名に相当します。
[ @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 を返します。 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_name、table_schema、table_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)