24.12 INFORMATION_SCHEMA KEY_COLUMN_USAGEtable
KEY_COLUMN_USAGEtable 描述了哪些键列具有约束。
KEY_COLUMN_USAGEtable 具有以下列:
CONSTRAINT_CATALOG
约束所属的目录的名称。此值始终为def
。
CONSTRAINT_SCHEMA
约束所属的模式(数据库)的名称。
CONSTRAINT_NAME
约束的名称。
TABLE_CATALOG
该 table 所属的目录的名称。此值始终为def
。
TABLE_SCHEMA
table 所属的模式(数据库)的名称。
TABLE_NAME
具有约束的 table 的名称。
COLUMN_NAME
具有约束的列的名称。
如果约束是外键,则这是外键的列,而不是外键引用的列。
ORDINAL_POSITION
列在约束中的位置,而不是 table 中列的位置。列位置从 1 开始编号。
POSITION_IN_UNIQUE_CONSTRAINT
NULL
用于唯一键和主键约束。对于外键约束,此列是所引用 table 的键中的 Sequences 位置。
REFERENCED_TABLE_SCHEMA
约束引用的模式(数据库)的名称。
REFERENCED_TABLE_NAME
约束引用的 table 的名称。
REFERENCED_COLUMN_NAME
约束引用的列的名称。
假设有两个 tablet1
和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;
对于这两个 table,KEY_COLUMN_USAGEtable 具有两行:
-
一行
CONSTRAINT_NAME
='PRIMARY'
,TABLE_NAME
='t1'
,COLUMN_NAME
='s3'
,ORDINAL_POSITION
=1
,POSITION_IN_UNIQUE_CONSTRAINT
=NULL
。 -
一行
CONSTRAINT_NAME
='CO'
,TABLE_NAME
='t3'
,COLUMN_NAME
='s2'
,ORDINAL_POSITION
=1
,POSITION_IN_UNIQUE_CONSTRAINT
=1
。