如何更新记录更新时,如何保持MySQL存储过程中的变量值不变?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何更新记录更新时,如何保持MySQL存储过程中的变量值不变?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1293字,纯文字阅读大概需要2分钟。
内容图文
我必须忽略一些简单的事情.我正在MySQL存储过程中的查询结果中设置一个变量,如下所示:
SELECT @myName := username FROM User WHERE ID=1;
因此,@ myName存储用户标识1的用户名,即“保罗”.大.
但是稍后在存储过程中我对此记录运行更新:
UPDATE User SET username = 'Fred' WHERE ID=1;
现在,出于某种原因,@ myName =’Fred’,它应该仍然等于’Paul’,对吗?似乎MySQL只是创建一个指向记录的指针,而不是在@myName变量中存储静态值.
简而言之,我希望能够在查询结果的变量中存储一个值,并确保我的变量的值不会改变,即使表中的数据是根据更改设置的.
我错过了什么?提前致谢!
解决方法:
我同意,这非常令人惊讶.我不确定如何解释它,但是为了它的价值,试试这个:
SELECT username INTO myName FROM User WHERE ID=1;
见http://dev.mysql.com/doc/refman/5.0/en/select-into-statement.html
更新:我正在尝试重现这个问题,但我不能.我在Mac OS X上使用MySQL 5.0.51.
drop table if exists user;
create table user (
id serial primary key,
username varchar(10)
);
insert into user (username) values ('Paul');
drop procedure if exists doit;
delimiter !!
create procedure doit()
begin
declare name varchar(10);
select @name:=username from user where id=1;
select @name; -- shows 'Paul' as expected
update user set username = 'Fred' where id=1;
select @name; -- still shows 'Paul'
end!!
delimiter ;
call doit();
您可以在测试数据库中尝试上面的代码,并告诉我们它是否表现出您描述的问题?
内容总结
以上是互联网集市为您收集整理的如何更新记录更新时,如何保持MySQL存储过程中的变量值不变?全部内容,希望文章能够帮你解决如何更新记录更新时,如何保持MySQL存储过程中的变量值不变?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。