2013-05-11 95 views
1

我想创建一些元数据来扩展mysql的功能,但我不能在数据库INFORMATION_SCHEMA中创建表。我认为我可以创建另一个数据库并在其中存储元数据,但我需要从表中的一些外键到INFORMATION_SCHEMA数据库中的某些表。尽管如此,我尝试创建它们时却遇到了错误。然后我想我可以创建一个触发器来获取变化的通知,但由于触发器与表关联,并且我无法更改该数据库,所以我也无法创建触发器。如何更改INFORMATION_SCHEMA或向其添加触发器或外键?

具体而言,我有一些表引用information_schema.schemata(schema_name)information_schema.schemata(columns)和其他一些。我想拥有这些外键,因此我可以使用ON UPDATE CASCADE ON DELETE CASCADE,否则我的表中会有一些行引用我的表,并且我不能允许这样做。

我使用mariaDB 5.5.30它使用MySql 5.3。

+0

我不知道是否在视图物化视图会工作。比你可以创建物化视图的索引/键... – xQbert 2013-05-11 22:13:39

回答

2

INFORMATION_SCHEMA表格实际上是其内容由MySQL服务器自动维护的视图。

The manual gives more information

INFORMATION_SCHEMA里面有几个只读表。他们 实际上是视图,而不是基表,所以没有与它们关联的文件 ,并且你不能在它们上设置触发器。此外,没有该名称的数据库目录 。

虽然你可以选择INFORMATION_SCHEMA作为默认数据库 与USE语句,你只能读取表的内容,而不是 执行INSERT,UPDATE或DELETE这些操作。

+0

感谢您的信息。你知道当这些观点发生变化时我该如何“观察”? – 2013-05-11 22:55:36

+0

我想你需要添加触发器到你想要监视的真实表,因为INFORMATION_SCHEMA表不接受触发器。 – Jocelyn 2013-05-11 22:57:06

1

他们不是真正的意见,但临时表,这就是为什么你没有看到文件夹。 显示创建视图视图; ERROR 1347(HY000):'information_schema./tmp/#sql_2ac_0' 不是VIEW

相关问题