我最近安装了一台带有Percona Server 5.6而不是MySQL 5.6的新计算机,并且主要使用InnoDB / XtraDB,FWIW。我正在研究的数据库仅仅是一个测试场,但我有一个问题:在我向表中添加一列(甚至删除一个)之后,我通常会忘记INSERT或以其他方式更改另一个表的数据,这会跟踪哪个列名在哪个表中;每个表都有ASCII名称和一个数字,为了简单起见,这个数字是表名之间的唯一区别。 那么,有没有办法自动更新“关系”表,以便添加或更改列名和表的编号,而不是使用cronjob?
现在我想,我可以删除该表并使用information_schema代替......
编辑0: 不要让上述实现阻止你;在寻找可能的其他方式之前,知道这是否可行是一件好事。
答案 0 :(得分:0)
是的,依赖'INFORMATION_SCHEMA.COLUMNS'可能是最好的。
不幸的是,mysql不支持DDL TRIGGER事件,因为这将是您正在寻找的。
触发器允许您在插入,更新或删除特定表中的行之前执行许多SQL和过程操作。但据我所知 - 如果我错了,我会被激怒 - 你不能在像ALTER和DROP TABLE这样的DDL语句上设置TRIGGER事件......
然而,仍然需要花时间了解触发器 - 它们通过消除对聚合值等事物的cronjobs和外部更新的需要而节省了大量时间。