mysql – 如何确定字段/列是否受UPDATE语句的影响

大家好,感谢您的回答和评论.

我有一个包含多个字段的表,其中包括version,last_modified和modified_by

我正在写一个触发器:

>每次/任何更新后,将版本增加1,
>将last_modified设置为当前时间戳,
>将进行最新更改的用户的ID设置为modified_by,和
>通过引发信号(在这种情况下)阻止程序员忽略/忘记在UPDATE语句中设置modified_by = userid.

我怎样才能做到这一点?

我尝试检查是否为isnull(NEW.modified_by),但后来意识到如果它没有受到影响,NEW.modified_by与OLD.modified_by采用相同的值.此外,检查NEW.modified_by是否等于OLD.modified_by并不完全成功,因为它可能是用户修改之前由他自己修改的记录.

有没有办法确定受UPDATE语句影响的字段?或者,如果特定字段(modified_by)受到影响?

解决方法:

我找不到任何可以让您检查传入信息以查看哪些字段受影响的内容.虽然我知道您试图在触发级别停止此问题,但要求所有表写入都要通过存储过程可能是明智的.这样你就可以要求用户字段了.

如果这不可能,我想你可能需要变得棘手.例如,您可能要求将user_id写入两个字段(为此目的创建一个空白的额外列).然后,将虚拟列中的user_id与要更新的用户ID进行比较.一旦弄清楚是否需要修改user_id,再次清空虚拟列.它不漂亮,但它可以完成工作.

上一篇:更新mysql中的触发器中的相同行


下一篇:where子句中的mysql unknown列.一个bug?