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.
