问题简述:
MySQL 存贮过程中定义的变量千万不要和和表中的名字一样,如果一样,再从表中取数据时,就会导致错误,而查询起来很难查出来。
举例 代码如下:
DECLARE col int;
set col =-1;
update mytTab set col =10 where pk =1;
select col into @col from mytTab where pk = 1;
本意是想获取 col 在pk=1时的值,但是并不是,获得的值是 -1;
修改代码如下:
DECLARE col int;
set col =-1;
update mytTab set col =10 where pk =1;
select t.col into @col from mytTab t.where t.pk = 1;
因此为了避免产生这种大乌龙,请老老实实的写上别名,不能省略。
maraSun 2022-02-18 BJFWDQ
在MySQL存储过程中,定义的变量若与表字段同名,会导致更新数据时的错误。例如,声明并初始化变量col为-1,然后更新表mytTab的col字段,接着尝试通过查询获取col的值,实际会得到-1而非预期的更新后的值。解决办法是在查询时使用表别名,如`t.col`,确保查询的是正确的列。遵循这一最佳实践可以避免类似的大乌龙。
1980

被折叠的 条评论
为什么被折叠?



