sp_fkeys (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric のウェアハウス
現在の環境への論理外部キーの情報を返します。 このプロシージャでは、無効にされている外部キーも含めて、外部キーのリレーションシップが示されます。
構文
sp_fkeys [ @pktable_name = ] 'pktable_name'
[ , [ @pktable_owner = ] 'pktable_owner' ]
[ , [ @pktable_qualifier = ] 'pktable_qualifier' ]
{ , [ @fktable_name = ] 'fktable_name' }
[ , [ @fktable_owner = ] 'fktable_owner' ]
[ , [ @fktable_qualifier = ] 'fktable_qualifier' ]
引数
[ @pktable_name=] 'pktable_name'
カタログ情報を返すために使われる、主キーが設定されたテーブルの名前です。 pktable_name は sysname であり、既定値は NULL です。 ワイルドカードのパターン マッチングはサポートされていません。 このパラメーターと fktable_name パラメーターのいずれか、または両方を指定する必要があります。
[ @pktable_owner=] 'pktable_owner'
カタログ情報を返すために使われる、主キーが設定されたテーブルの所有者の名前です。 pktable_owner は sysname であり、既定値は NULL です。 ワイルドカードのパターン マッチングはサポートされていません。 pktable_owner を指定しないと、基になる DBMS の既定のテーブル可視性ルールが適用されます。
SQL Server では、指定した名前のテーブルを現在のユーザーが所有している場合、そのテーブルの列が返されます。 pktable_owner を指定せず、指定した pktable_name を持つテーブルを現在のユーザーが所有していない場合、このプロシージャでは、データベース所有者によって所有されていて、指定した pktable_name であるテーブルが検索されます。 存在する場合は、そのテーブルの列が返されます。
[ @pktable_qualifier =] 'pktable_qualifier'
(主キーが設定された) テーブルの修飾子の名前です。 pktable_qualifier は sysname であり、既定値は NULL です。 さまざまな DBMS 製品で、テーブルについて 3 パート構成の名前 (qualifier.owner.name) がサポートされています。 SQL Server では、この修飾子はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。
[ @fktable_name=] 'fktable_name'
カタログ情報を返すために使用する (外部キーが設定された) テーブルの名前を指定します。 fktable_name は sysname であり、既定値は NULL です。 ワイルドカードのパターン マッチングはサポートされていません。 このパラメーターと pktable_name パラメーターのいずれか、または両方を指定する必要があります。
[ @fktable_owner =] 'fktable_owner'
カタログ情報を返すために使用する (外部キーが設定された) テーブルの所有者の名前を指定します。 fktable_owner は sysname であり、既定値は NULL です。 ワイルドカードのパターン マッチングはサポートされていません。 fktable_owner を指定しないと、基になる DBMS の既定のテーブル可視性ルールが適用されます。
SQL Server では、指定した名前のテーブルを現在のユーザーが所有している場合、そのテーブルの列が返されます。 fktable_owner を指定せず、指定した fktable_name を持つテーブルを現在のユーザーが所有していない場合、このプロシージャでは、データベース所有者によって所有されていて、指定した fktable_name であるテーブルが検索されます。 存在する場合は、そのテーブルの列が返されます。
[ @fktable_qualifier= ] 'fktable_qualifier'
(外部キーが設定された) テーブルの修飾子の名前です。 fktable_qualifier は sysname であり、既定値は NULL です。 SQL Server では、この修飾子はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。
リターン コードの値
なし
結果セット
列名 | データ型 | 説明 |
---|---|---|
PKTABLE_QUALIFIER | sysname | (主キーが設定された) テーブルの修飾子の名前。 このフィールドは NULL になる場合があります。 |
PKTABLE_OWNER | sysname | 主キーが設定されたテーブルの所有者名です。 このフィールドには常に値が返されます。 |
PKTABLE_NAME | sysname | (主キーが設定された) テーブルの名前。 このフィールドには常に値が返されます。 |
PKCOLUMN_NAME | sysname | 返される TABLE_NAME の各列に対する、主キー列の名前です。 このフィールドには常に値が返されます。 |
FKTABLE_QUALIFIER | sysname | 外部キーが設定されたテーブルの修飾子の名前です。 このフィールドは NULL になる場合があります。 |
FKTABLE_OWNER | sysname | (外部キーが設定された) テーブルの所有者の名前。 このフィールドには常に値が返されます。 |
FKTABLE_NAME | sysname | 外部キーが設定されたテーブルの名前です。 このフィールドには常に値が返されます。 |
FKCOLUMN_NAME | sysname | 返される TABLE_NAME の各列の、外部キー列の名前。 このフィールドには常に値が返されます。 |
KEY_SEQ | smallint | 複数列の主キーにおける列のシーケンス番号。 このフィールドには常に値が返されます。 |
UPDATE_RULE | smallint | SQL の操作が更新のときに外部キーに適用されるアクション。 指定できる値 0 = 外部キーに対する CASCADE 変更。 1 = 外部キーが存在する場合は NO ACTION 変更。 2 = null を設定する 3 = 既定値に設定 |
DELETE_RULE | smallint | SQL の操作が削除のときに外部キーに適用されるアクション。 指定できる値 0 = 外部キーに対する CASCADE 変更。 1 = 外部キーが存在する場合は NO ACTION 変更。 2 = null を設定する 3 = 既定値に設定 |
FK_NAME | sysname | 外部キーの識別子。 データ ソースに適用されない場合は NULL になります。 SQL Server は、FOREIGN KEY 制約の名前を返します。 |
PK_NAME | sysname | 主キーの識別子。 データ ソースに適用されない場合は NULL になります。 SQL Server は、PRIMARY KEY 制約の名前を返します。 |
返される結果は、FKTABLE_QUALIFIER、FKTABLE_OWNER、FKTABLE_NAME、KEY_SEQ の順序に従って並べ替えられます。
解説
外部キーが無効にされたテーブルを含むアプリケーション コーディングは、次のようにして実装できます。
そのテーブルで作業している間は、一時的に制約チェックを無効にして (ALTER TABLE NOCHECK または CREATE TABLE NOT FOR REPLICATION)、その後再び有効にします。
トリガーまたはアプリケーション コードを使ったリレーションシップの適用。
主キー テーブルの名前を指定され、外部キー テーブルの名前が NULL の場合、sp_fkeys は指定されたテーブルに対する外部キーを含むすべてのテーブルを返します。 外部キー テーブルの名前を指定し、主キー テーブルの名前が NULL の場合、sp_fkeys は、主キー/外部キー関係によって外部キー テーブルの外部キーに関係付けられるすべてのテーブルを返します。
sp_fkeys ストアド プロシージャは、ODBC の SQLForeignKeys に相当します。
アクセス許可
スキーマに対する SELECT
アクセス許可が必要です。
例
次の例では、AdventureWorks2022
データベースの HumanResources.Department
テーブルの外部キーの一覧が取得されます。
USE AdventureWorks2022;
GO
EXEC sp_fkeys @pktable_name = N'Department'
,@pktable_owner = N'HumanResources';
例: Azure Synapse Analytics、Analytics Platform System (PDW)
次の例では、AdventureWorksPDW2012
データベースの DimDate
テーブルの外部キーの一覧が取得されます。 Azure Synapse Analytics は外部キーをサポートしていないため、行は返されません。
EXEC sp_fkeys @pktable_name = N'DimDate';
参照
ストアド プロシージャ カタログ (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)
sp_pkeys (Transact-SQL)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示