【问题标题】:MySQL/Percona 5.6: INSERT INTO a table after a table is ALTERedMySQL/Percona 5.6:在表被更改后插入表
【发布时间】:2014-03-07 15:32:48
【问题描述】:

我最近安装了一台带有 Percona Server 5.6 而不是 MySQL 5.6 的新计算机,并且主要使用 InnoDB/XtraDB,FWIW。我正在处理的数据库只是一个试验场,但我有一个问题:在我向表中添加一列(甚至删除一列)后,我通常忘记插入或以其他方式更改另一个表的数据,这会跟踪哪个表中有哪些列名;每个表都有一个 ASCII 名称和一个数字,为​​简单起见,这个数字是表名称之间的唯一区别。 那么,有没有办法自动更新“关系”表,以便添加或更改列名和表的编号,而不是使用 cronjob?

现在我想,我可以 DROP 该表并改用 information_schema ...

EDIT 0: 不要让上述认识阻止你;在采取其他可能的方式之前,最好知道这是否可行。

【问题讨论】:

    标签: mysql sql database percona


    【解决方案1】:

    是的,最好依靠“INFORMATION_SCHEMA.COLUMNS”。

    不幸的是,mysql 不支持 DDL TRIGGER 事件,因为这正是您要寻找的。

    触发器允许您在插入、更新或删除特定表中的行之前执行许多 SQL 和过程操作。然而据我所知——如果我错了我会很兴奋——你不能在 DDL 语句上设置触发事件,比如 ALTER 和 DROP TABLE...

    但是仍然需要花时间来了解触发器 - 它们通过消除对聚合值之类的 cronjob 和外部更新的需要而节省了大量时间。

    https://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html

    【讨论】:

    • 然而,它可能会使其反向工作。即在您意识到的伪信息模式表中可能是多余的 - ON INSERT 到该 tbl.alter 另一个表。您仍然不能在信息架构上使用它,因为它们实际上是视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多