[英]Getting trigger to fire conditionally (MySQL / PHP)
我希望仅当用户启动UPDATE时才触发触发器(不是我从MySQL命令行运行更新)。
实现这一目标的“行业标准”是什么? 我一直在尝试检测与查询一起传入的变量(即@ user_update = true),但未成功。 我的一位同事建议一种方法,例如,在包含触发器的表中添加一个新列:“ fire_trigger”。 当从代码中运行SQL时,并用'true'填充,并确保存在以触发触发器。
任何帮助,不胜感激!
在执行命令行更新之前,请禁用触发器,然后再重新启用它。
但是从概念上讲,您这样做是错误的。
使用命令行时,为什么不运行触发器? 我假设这是某种审计触发器,它捕获谁更新了一行。 您在命令行中也是“谁”。
OP的评论:
是的-好点! :)是“ dd / mm / yyyy hh:mm-用户A”的名字从“ Jane”更改为“ Joan””类型的东西。 当我潜在地“手动”更新行时,我只是不希望它在测试阶段填充历史记录表。
然后,要么禁用触发器,要么只是在此之后删除添加的历史记录行。 更好的是,在单独的数据库上进行测试,根本不用担心。
创建2个mysql用户:一个由应用程序使用(以便它将标识您的用户),一个在通过mysql客户端连接时将使用。
在更新触发器中,使用CURRENT_USER()检查用户,并仅在它是应用程序用户时才采取措施。
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.