如何在MySQL数据库中引用information_schema.tables中的行?

如何在MySQL数据库中引用information_schema.tables中的行?,mysql,information-schema,Mysql,Information Schema,在MySQL中,information_schema.tables.table_name列标识数据库中所有表的名称。我想在通用更新历史记录表中记录该表的名称。我可以用一个varchar(64)来实现,但如果表名很长,这可能会造成很大的浪费。我可以使用一个查找表来存储名称的副本,然后使用一个外键指向我的_table_names.id,但是考虑到已经存在一个表名表,这似乎需要做更多的工作。问题是,当我使用phpMyAdmin查看时,我看不到任何类型的“id”列或其他主键。那么如何引用行呢?请记住信息

在MySQL中,information_schema.tables.table_name列标识数据库中所有表的名称。我想在通用更新历史记录表中记录该表的名称。我可以用一个varchar(64)来实现,但如果表名很长,这可能会造成很大的浪费。我可以使用一个查找表来存储名称的副本,然后使用一个外键指向我的_table_names.id,但是考虑到已经存在一个表名表,这似乎需要做更多的工作。问题是,当我使用phpMyAdmin查看时,我看不到任何类型的“id”列或其他主键。那么如何引用行呢?

请记住
信息\u架构。表格。表格\u名称
不会包含唯一的条目,因为表格由
架构标识。表格\u名称
不确定您在问什么。组合
TABLE\u SCHEMA
TABLE\u NAME
将始终是唯一的。噢,校验和字段呢。我手头没有MySQL来检查那里有什么,但这可能是有用的。很抱歉,我不明白您所说的
schema.table_name
是什么意思,但肯定组合
table_schema,table_name
将是唯一的,否则您可能有两个同名的表。这意味着
information\u schema.tables
中必须有一行,但那一行的“索引”是什么?是的,我刚才提到
table\u name
本身并不是唯一的。因为在您的问题中,您只将
表\u name
作为您要键入的字段。让我来回答你的问题。“那么我如何引用行呢?”对于任何设计良好的表,您都可以通过表的唯一键引用任何行。使用
SHOW CREATE TABLE
查找可能的UK。一个表不需要有一列来标识它。