是这样的,萌新现在正在学习mysql触发器,在Navicat Premium上验证before触发器功能的时候发现了以下问题:
首先我建了一张学生表内容如下:
然后我设置一个before触发器如下:
即当进行update操作的时候,就将学生的名字改为"小白"
然后我又写了一条sql语句,更新sid=1的学生名字为"小黑"
但执行的结果却是:
本萌新记得before触发器是先完成触发,再增删改,触发的语句先于监视的增删改。那么按理说,我觉得我以上的操作结果应该是:
监听到update语句--->触发器触发--->sid=1的学生名字变为小白--->继续执行update语句--->sid学生名字变为小黑。这样才对。
可为什么,最后的结果却是小白,这不就相当于只执行了before触发器里的语句,sql语句里的uspdate操作没有生效吗?
但是before触发器不是应该是先监听到监视语句,再触发,最后再执行监视语句吗?这不就跟它的概念不相符了吗?
百度了很久,也没找到想要的答案,在此跪求大佬解答,万分感谢