28.3.16 INFORMATION_SCHEMA KEY_COLUMN_USAGE 表
该KEY_COLUMN_USAGE表描述了哪些关键列具有约束。该表不提供有关功能关键部分的信息,因为它们是表达式,并且该表仅提供有关列的信息。
该KEY_COLUMN_USAGE表包含以下列:
-
CONSTRAINT_CATALOG约束所属的目录的名称。此值始终为
def。 -
CONSTRAINT_SCHEMA约束所属的模式(数据库)的名称。
-
CONSTRAINT_NAME约束的名称。
-
TABLE_CATALOG表所属的目录的名称。此值始终为
def。 -
TABLE_SCHEMA表所属模式(数据库)的名称。
-
TABLE_NAME具有约束的表的名称。
-
COLUMN_NAME具有约束的列的名称。
如果约束是外键,那么这是外键的列,而不是外键引用的列。
-
ORDINAL_POSITION列在约束中的位置,而不是列在表中的位置。列位置从 1 开始编号。
-
POSITION_IN_UNIQUE_CONSTRAINTNULL对于唯一和主键约束。对于外键约束,此列是所引用表的键中的序数位置。 -
REFERENCED_TABLE_SCHEMA约束引用的架构的名称。
-
REFERENCED_TABLE_NAME约束引用的表的名称。
-
REFERENCED_COLUMN_NAME约束引用的列的名称。
假设有两个表名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;
对于这两个表, KEY_COLUMN_USAGE表有两行:
-
一行包含
CONSTRAINT_NAME='PRIMARY'、TABLE_NAME='t1'、COLUMN_NAME='s3'、ORDINAL_POSITION=1、POSITION_IN_UNIQUE_CONSTRAINT=NULL。对于
NDB:此值始终为NULL。 -
一行包含
CONSTRAINT_NAME='CO'、TABLE_NAME='t3'、COLUMN_NAME='s2'、ORDINAL_POSITION=1、POSITION_IN_UNIQUE_CONSTRAINT=1。