有什么方法可以检测在mysql中何时执行alter table语句?

34gzjxbg  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(404)

有没有办法检测到 ALTER TABLE 语句是否在mysql中执行?例如,如果对执行以下语句 some_table ,是否有方法检测列名从 column_name_acolumn_name_b 把它记录到数据库的另一个表中?

ALTER TABLE `some_table` 
CHANGE COLUMN `column_name_a` `column_name_b` VARCHAR(255) NULL DEFAULT NULL;

谢谢。

vpfxa7rd

vpfxa7rd1#

据我所知,不幸的是不可能在informationschema表上放置触发器,因为它们是严格意义上的视图,触发器不能用于视图。如果可以在信息模式上使用触发器,那么可以在更新information\u schema.columns表时使用触发器来标识名称更改。
但是,您可以执行以下操作之一:
选项1)维护一个包含所有列名的实表。然后创建一个函数,检查information\u schema.columns表和您的表之间是否存在差异。如果有,你就知道名字变了。您需要将新名称复制到列名表中,并在名称更改时执行任何其他操作。
然后,必须通过mysql调度程序定期运行检查差异的函数,以便尽快检测名称更改。请注意,这不是一个实时解决方案。两者之间会有一个延迟 ÀLTER TABLE 命令及其检测。如果这在你的场景中是不可接受的,你需要继续
选项2)不呼叫 ÀLTER TABLE 直接,但将其 Package 在函数中。在这个函数中,您还可以调用其他函数来实现您需要实现的功能。if可能值得用更高级的编程语言来制定所需的步骤,以驱动应用程序。如果这是不可能的,您将被限制在mysql环境中的函数/过程中提供的可能性。
很抱歉,没有一个更简单的方法为您做这件事。

相关问题