1

我正在尝试创建一些元数据来扩展 mysql 功能,但我无法在数据库 INFORMATION_SCHEMA 中创建表。我认为我可以创建另一个数据库并在其中保存我的元数据,但我需要一些外键从我的表到 INFORMATION_SCHEMA 数据库中的一些表。不过,我在尝试创建它们时会出错。然后我想我可以创建一个触发器来获得更改通知,但是由于触发器与表相关联并且我无法更改该数据库,因此我也无法创建触发器。

具体来说,我有一些表引用information_schema.schemata(schema_name)和引用以及其他一些表information_schema.schemata(columns)。我想拥有那些外键,这样我就可以使用ON UPDATE CASCADE ON DELETE CASCADE,否则我的表中会有一些行没有引用,我不能允许这样做。

我正在使用使用 MySql 5.3 的 mariaDB 5.5.30。

4

2 回答 2

2

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

该手册提供了更多信息

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

虽然您可以使用 USE 语句选择 INFORMATION_SCHEMA 作为默认数据库,但您只能读取表的内容,不能对其执行 INSERT、UPDATE 或 DELETE 操作。

于 2013-05-11T22:08:12.770 回答
1

它们不是真正的视图,而是临时表,这就是您看不到文件夹的原因。show 创建视图视图;错误 1347 (HY000): 'information_schema./tmp/#sql_2ac_0' 不是 VIEW

于 2014-12-09T12:32:27.603 回答