繁体   English   中英

有条件地触发触发器(MySQL / PHP)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM