我正在尝试创建一些元数据来扩展mysql功能但我无法在数据库INFORMATION_SCHEMA中创建表。我以为我可以创建另一个数据库并在那里拥有我的元数据,但我需要从表中的一些外键到INFORMATION_SCHEMA DB中的一些表。然而,在尝试创建它时我遇到了错误。然后我想我可以创建一个触发器以获得更改通知,但由于触发器与表关联,我无法更改该数据库,我也无法创建触发器。
具体来说,我有一些表引用了information_schema.schemata(schema_name)
和information_schema.schemata(columns)
以及其他一些表。我想拥有那些外键,所以我可以使用ON UPDATE CASCADE ON DELETE CASCADE
或者我会在我的表中有一些行引用什么都没有,我不能允许。
我使用的是使用MySql 5.3的mariaDB 5.5.30。
答案 0 :(得分:2)
INFORMATION_SCHEMA表实际上是视图,其内容由MySQL服务器自动维护。
The manual gives more information:
在INFORMATION_SCHEMA中,有几个只读表。他们 实际上是视图,而不是基表,因此没有关联的文件 与他们一起,你不能在他们上设置触发器。而且,没有 具有该名称的数据库目录。
虽然您可以选择INFORMATION_SCHEMA作为默认数据库 使用USE语句,您只能读取表的内容 对它们执行INSERT,UPDATE或DELETE操作。
答案 1 :(得分:1)
它们不是真正的视图而是临时表,这就是为什么你看不到文件夹的原因。 显示创建视图视图; ERROR 1347(HY000):'information_schema./tmp/#sql_2ac_0'不是VIEW