gpt4 book ai didi

mysql - 有什么方法可以检测何时在 MySQL 中执行 ALTER TABLE 语句?

转载 作者:行者123 更新时间:2023-11-29 07:34:12 25 4
gpt4 key购买 nike

有什么方法可以检测 MySQL 中何时执行 ALTER TABLE 语句?例如,如果在 some_table 上执行了以下语句,是否有任何方法可以检测到列名从 column_name_a 更改为 column_name_b 并记录它在数据库的另一个表中?

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

谢谢。

最佳答案

据我所知,不幸的是不可能在 INFORMATION_SCHEMA 表上放置触发器,因为它们是严格意义上的 View ,并且不能使触发器对 View 起作用。如果在 INFORMATION SCHEMA 上可以使用触发器,那么您可以在 INFORMATION_SCHEMA.COLUMNS 表的更新上使用触发器来识别名称更改。

但是,您可以做以下事情之一:

选项 1) 维护一个包含所有列名的真实表。然后创建一个函数来检查 INFORMATION_SCHEMA.COLUMNS 表与您的表之间的差异。如果有的话,你知道名字已经改变了。您需要将新名称复制到您的列名称表中,并在名称更改时执行您想要执行的任何其他操作。

检查差异的功能必须通过 mysql 调度程序定期运行,以便尽快检测名称更改。请注意,这不是实时解决方案。 ÀLTER TABLE 命令与其检测之间会有延迟。如果这在您的场景中是 Not Acceptable ,您需要使用

选项 2) 不要直接调用 ÀLTER TABLE,而是将其包装在一个函数中。在这个函数内你还可以调用其他函数来实现你需要实现的。如果用您用来驱动应用程序的高级编程语言来制定所需的步骤可能是值得的。如果这不可能,您将仅限于 mysql 环境中函数/过程中提供的可能性。

很抱歉没有更简单的方法为您做这件事。

关于mysql - 有什么方法可以检测何时在 MySQL 中执行 ALTER TABLE 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49744385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com