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=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。