SQL Engine Reference (v11)

dbo.fSQLForeignKeys

この関数は、現在のデータベース内の特定テーブルの外部キー情報を返します。dbo.fSQLForeignKeys は、外部キーの一覧を次のいずれかの結果セットとして返すことができます。

構文

dbo.fSQLForeignKeys (<'table_qualifier' | null>, 'pkey_
table_name' | null>, <'fkey_table_name' | null>) 

引数

表 112 dbo.fSQLForeignKeys の引数
パラメーター
データ型
デフォルト値
説明
table_qualifier
VARCHAR
現在のデータベース
詳細を取得するデータベースの名前。
pkey_table_name
VARCHAR
(デフォルト値なし)
主キー列に外部キーが関連付けられているテーブルの名前。パターン検索がサポートされます(文字列検索パターンを参照してください)。
fkey_table_name
VARCHAR
(デフォルト値なし)
外部キー情報を取得する必要のあるテーブルの名前。パターン検索がサポートされます(文字列検索パターンを参照してください)。

返される結果セット

表 113 dbo.fSQLForeignKeys で返される結果セット
列名
データ型
説明
PKTABLE_QUALIFIER
VARCHAR
主キー テーブルのデータベース名。データベースに適用されない場合は NULL。
PKTABLE_OWNER
VARCHAR
主キー テーブルのオーナーの名前。データベースに適用されない場合は NULL。
PKTABLE_NAME
NULL でない VARCHAR
主キー テーブルの名前
PKCOLUMN_NAME
NULL でない VARCHAR
主キー列の列名名前のない列については、空文字列が返されます。
FKTABLE_QUALIFIER
VARCHAR
外部キー テーブルのデータベース名。データベースに適用されない場合は NULL。
FKTABLE_OWNER
VARCHAR
外部キー テーブルのオーナーの名前。データベースに適用されない場合は NULL。
FKTABLE_NAME
NULL でない VARCHAR
外部キー テーブルの名前。
FKCOLUMN_NAME
NULL でない VARCHAR
外部キー列の列名名前のない列については、空文字列が返されます。
KEY_SEQ
SMALLINT
キーにおける列のシーケンス番号(1 から始まります)。この列の値は、X$Index の Xi$Part に対応します。X$Index を参照してください。
UPDATE_RULE
SMALLINT
SQL 操作が UPDATE であるとき、外部キーに適用される動作。次のいずれかの値になります。
  • 0 = SQL_CASCADE
  • 1 = SQL_RESTRICT
DELETE_RULE
SMALLINT
SQL 操作が DELETE であるとき、外部キーに適用される動作。次のいずれかの値になります。
  • 0 = SQL_CASCADE
  • 1 = SQL_RESTRICT
FK_NAME
VARCHAR
外部キーの名前。データベースに適用されない場合は NULL。
PK_NAME
VARCHAR
主キーの名前。データベースに適用されない場合は NULL。
DEFERRABILITY
SMALLINT
次のいずれかの値です。
  • 5 = SQL_INITIALLY_DEFERRED
  • 6 = SQL_INITIALLY_IMMEDIATE
  • 7 = SQL_NOT_DEFERRABLE

次の例では、DEMODATA サンプル データベースに 3 つのテーブルを作成します。それらのテーブルに外部キーと主キーが割り当てられます。dbo.fSQLForeignKeys 関数は、文字列検索パターンを使って 2 つの主キー テーブルを参照します。文字列検索パターンも参照してください。

CREATE TABLE primarykey1 (pk1col1 INT, pk1col2 INT, 
pk1col3 INT, pk1col4 INT, PRIMARY KEY (pk1col1, 
pk1col2)) 
ALTER TABLE primarykey1 ADD FOREIGN KEY (pk1col3, 
pk1col4) REFERENCES primarykey1 ON DELETE CASCADE 
 
CREATE TABLE primarykey2 (pk2col1 INT, pk2col2 INT, 
pk2col3 INT, pk2col4 INT, PRIMARY KEY (pk2col1, 
pk2col2)) 
ALTER TABLE primarykey2 ADD FOREIGN KEY (pk2col3, 
pk2col4) REFERENCES primarykey2 ON DELETE CASCADE 
 
CREATE TABLE foreignkey1 (fkcol1 INT, fkcol2 INT, fkcol3 
INT, fkcol4 INT) 
ALTER TABLE foreignkey1 ADD FOREIGN KEY (fkcol1, fkcol2) 
REFERENCES PRIMARYKEY1 
ALTER TABLE foreignkey1 ADD FOREIGN KEY (fkcol3, fkcol4) 
REFERENCES PRIMARYKEY2 
 
SELECT * FROM dbo.fSQLForeignKeys ('Demodata', 
'primarykey%',  'foreignkey1') 
 

結果セット(スペースを考慮して短縮されています):

FKCOLUMN_NAME  DELETE_RULE   FK_NAME     PK_NAME    
=============  ===========   ==========  ========== 
fkcol1                   1   FK_0fkcol1  PK_pk1col1 
fkcol2                   1   FK_0fkcol1  PK_pk1col1 
fkcol3                   1   FK_0fkcol3  PK_pk2col1 
fkcol4                   1   FK_0fkcol3  PK_pk2col1 
 
4 行が影響を受けました。 

dbo.fSQLColumns

dbo.fSQLPrimaryKeys