是否可以在一个表中“约束”列,以任何方式“引用”来自information_schema
中的视图的列(它不一定是正确的外键约束,因此是恐慌引号)? - 我需要一种最小的侵入式方法来添加关于现有列数据的任意元数据(例如,添加关于例如shop.cheeses.name
n 的值shop.cheeses.id =
的“注释”),所以我想到如此定义一个额外的表:
CREATE TABLE shop.metadata (
`table_schema` VARCHAR(64) NOT NULL,
`table_name` VARCHAR(64) NOT NULL,
`column_name` VARCHAR(64) NOT NULL,
`record_id` INT(11) UNSIGNED NOT NULL,
`comments` TEXT NOT NULL, /* just to show the purpose of the table */
PRIMARY KEY (`table_schema`, `table_name`, `column_name`, `record_id`),
FOREIGN KEY (`table_schema`, `table_name`, `column_name`) REFERENCES information_schema.TABLES(`TABLE_SCHEMA`, `TABLE_NAME`, `COLUMN_NAME`)
);
但是,此语句返回ERROR 1215 (HY000): Cannot add foreign key constraint
,大概是因为TABLE_SCHEMA
,TABLE_NAME
和COLUMN_NAME
未定义为UNIQUE
(编辑:即使列是唯一的,似乎也不可能,因为您无法在外键约束中引用视图。)
但是,没有其他方法来定义
的要求shop.metadata.table_schema
必须包含来自information_schema.TABLES.TABLE_SCHEMA
shop.metadata.table_name
必须包含来自information_schema.TABLES.TABLE_NAME
shop.metadata.column_name
必须包含来自information_schema.TABLES.COLUMN_NAME
(TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, record_id)
的任何四倍都是唯一的?感谢您的帮助。