sp_foreignkeys (Transact-SQL)
適用対象: SQL Server
リンク サーバー内のテーブルの主キーを参照する外部キーを返します。
構文
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_server は sysname で、既定値はありません。
[ @pktab_name = ] N'pktab_name'
主キーを持つテーブルの名前。 @pktab_name は sysname で、既定値は NULL
です。
[ @pktab_schema = ] N'pktab_schema'
主キーを持つスキーマの名前。 @pktab_schema は sysname で、既定値は NULL
です。 SQL Server では、このパラメーターには所有者名が含まれています。
[ @pktab_catalog = ] N'pktab_catalog'
主キーを持つカタログの名前。 @pktab_catalog は sysname で、既定値は NULL
です。 SQL Server では、このパラメーターにはデータベース名が含まれています。
[ @fktab_name = ] N'fktab_name'
外部キーを持つテーブルの名前。 @fktab_name は sysname で、既定値は NULL
です。
[ @fktab_schema = ] N'fktab_schema'
外部キーを持つスキーマの名前。 @fktab_schema は sysname で、既定値は NULL
です。
[ @fktab_catalog = ] N'fktab_catalog'
外部キーを持つカタログの名前。@fktab_catalog は sysname で、既定値は 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';