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

约束引用的列的名称。

假设有两个 tablet1t3,它们具有以下定义:

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 = 1POSITION_IN_UNIQUE_CONSTRAINT = NULL

  • 一行CONSTRAINT_NAME = 'CO'TABLE_NAME = 't3'COLUMN_NAME = 's2'ORDINAL_POSITION = 1POSITION_IN_UNIQUE_CONSTRAINT = 1