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_CONSTRAINT
NULL
,用于唯一约束和主键约束。对于外键约束,这个列是被引用的表的关键字中的顺序。 -
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
=POSITION_IN_ UNIQUE_CONSTRAINT
=NULL
。对于NDB:这个值总是
NULL
。 -
一行记录,具有以下属性:
CONSTRAINT_NAME
='CO'
,TABLE_NAME
='t3'
,COLUMN_NAME
='s2'
,ORDINAL_POSITION
=POSITION_IN_UNIQUE_CONSTRAINT
=