如何更改INFORMATION_SCHEMA或添加触发器或外键?

时间:2013-05-11 22:03:24

标签: mysql information-schema mariadb

我正在尝试创建一些元数据来扩展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。

2 个答案:

答案 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