mysql触发记录,查找更改的列
我正在编写一个触发器来跟踪表中发生的所有更改.不幸的是,这个表有150列,我想避免在代码中编写每一列(例如new.col1,new.col2 ….),因此我在“更新触发器后”编写了一个以下查询
由于更新查询中未更改的数据重复,此想法导致多个问题. 简而言之,我想动态地找出哪些列是更新查询的一部分,如果不可能,有一种方法可以遍历“new”行的所有列,这样我就可以动态地比较旧的.@ colName == new @ COLNAME? 我已经看过了 最后一个链接是关闭我需要的只有一个区别,我不想在下面的语句中硬编码列名,因为我在所有表中有超过100列我将要编写类似的触发器!!
最佳答案
我今天早上对此进行了一些研究,看起来我遇到了与你相同的搜索结果.最终,我认为没有办法遍历所有表列并引用相应的旧/新值.我正在决定明确检查每一列,然后记录:
我找到了另一个解决方案here.理论上你可以有3个分隔列表,一个用于列名,一个用于旧val,一个用于新val.您必须显式引用旧的和新的val,但这将是一行(更容易维护或复制/粘贴以在其他表上实现),然后您可以循环.所以在伪代码中,它看起来像这样:
我没想过太多.您可能需要调用存储过程而不是设置变量.但它可能值得研究.我已经在我的触发器上花了足够的时间.不确定我能否(对我的老板)验证更优雅的解决方案的试错时间. (编辑:鲜蔬坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- MYSQL数据库Mysql索引会失效的几种情况分析
- php – 从csv文件中读取第一行并根据它创建表(csv文件字段)
- php – 防止对现有HTML实体进行编码(转换为而不是 to amp;)
- 如何正确避免Mysql竞争条件
- Mysql入门linux下mysql提示mysql deamon failed to start错
- 将mysql查询应用于数据库中的每个表
- MYSQL数据库Cant connect to MySQL server的解决办法
- 在Phpmyadmin中更改Mysql Server的端口
- mysql – 更改SQLAlchemy的Session.delete()行为
- Mysql实例完美解决MySQL通过localhost无法连接数据库的问题