MySQL+PHP 是否可以在一次查询中增加 INT 值并返回新值?
$sql = mysql_query("UPDATE table SET number=number+1 WHERE id='uniqid'");
$updated_number = ???
或者我需要发布另一个查询?
SELECT number FROM table WHERE id='uniqid'
简单的答案 - 不,这是不可能的。
更长的答案是,是的,如果您使用一个存储过程来增加指定 ID 的值,检索新值并返回它。
我刚刚在 MySQL 5.1.59 下测试过:
CREATE PROCEDURE increment (IN uniqid VARCHAR(255))
BEGIN
UPDATE `table` SET number = number + 1 WHERE id = uniqid;
SELECT number FROM `table` WHERE id = uniqid;
END
Usage:
CALL increment(uniqid)
如果可以同时进行多个访问,您可能希望LOCK
首先锁定表以确保操作的原子性 - MySQL 显然不允许存储过程锁定表本身。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)