KEY_COLUMN_USAGE
テーブルはどのキーカラムがに制約があるかを説明します。
INFORMATION_SCHEMA
名 |
SHOW 名 |
備考 |
CONSTRAINT_CATALOG |
NULL |
|
CONSTRAINT_SCHEMA |
||
CONSTRAINT_NAME |
||
TABLE_CATALOG |
||
TABLE_SCHEMA |
||
TABLE_NAME |
||
COLUMN_NAME |
||
ORDINAL_POSITION |
||
POSITION_IN_UNIQUE_CONSTRAINT |
||
REFERENCED_TABLE_SCHEMA |
||
REFERENCED_TABLE_NAME |
||
REFERENCED_COLUMN_NAME |
注:
制約が外部キーの場合、これは外部キーのカラムで、外部キーが参照するカラムではありません。
ORDINAL_POSITION
の値は制約内のカラムの位置で、テーブル内のカラムの位置ではありません。カラムの位置には
1 から始まる番号が付いています。
POSITION_IN_UNIQUE_CONSTRAINT
の値は一意およびプライマリ キー制約に対し
NULL
です。外部キーの制約では、参照されるテーブルのキーの順序です。
例えば、以下の定義を有する 2
つのテーブル名 t1
と
t3
あるとします。
CREATE TABLE t1 ( s1 INT, s2 INT, s3 INT, PRIMARY KEY(s3) ) ENGINE=InnoDB; CREATE TABLE t3 ( s1 INT, s2 INT, s3 INT, KEY(s1), CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3) ) ENGINE=InnoDB;
それらの 2
つのテーブルに対し、KEY_COLUMN_USAGE
テーブルには 2 つの行があります。
1 つの行の CONSTRAINT_NAME
=
'PRIMARY'
,
TABLE_NAME
=
't1'
,
COLUMN_NAME
=
's3'
,
ORDINAL_POSITION
=
1
,
POSITION_IN_UNIQUE_CONSTRAINT
=
NULL
.
1 つの行の CONSTRAINT_NAME
=
'CO'
,
TABLE_NAME
=
't3'
,
COLUMN_NAME
=
's2'
,
ORDINAL_POSITION
=
1
,
POSITION_IN_UNIQUE_CONSTRAINT
=
1
.