【问题标题】:How to alter INFORMATION_SCHEMA or add triggers or foreign keys to it?如何更改 INFORMATION_SCHEMA 或添加触发器或外键?
【发布时间】:2013-05-06 07:30:54
【问题描述】:

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

【问题讨论】:

  • 我想知道视图上的物化视图是否可以工作。比你可以从物化视图中创建索引/键...

标签: mysql information-schema mariadb


【解决方案1】:

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

The manual gives more information:

在 INFORMATION_SCHEMA 内部有几个只读表。他们 实际上是视图,而不是基表,因此没有关联的文件 与他们一起,你不能在他们身上设置触发器。另外,没有 具有该名称的数据库目录。

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

【讨论】:

  • 感谢您提供的信息。当这些视图发生变化时,您知道我如何“观察”吗?
  • 我认为您需要将触发器添加到要监控的真实表中,因为 INFORMATION_SCHEMA 表不接受触发器。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多