首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySql中的增量int值

MySql中的增量int值
EN

Stack Overflow用户
提问于 2013-06-07 17:25:08
回答 2查看 573关注 0票数 0

我试图从MySql数据库的字段中获取一个整数值,并在添加新记录时将其递增1。实际情况是,当插入记录时,它会放置一个1,而不是将1加到该字段的值上。例如,在最后一条记录中,该值为10,因此在运行查询后,该值应为11。

我正在努力理解为什么这不起作用,如果有人能提供任何建议,如何修改我的代码,使之成为一个有效的解决方案,我将不胜感激。非常感谢

php代码

代码语言:javascript
运行
复制
function get_ref(){
     $query = "SELECT MAX(`id_usr`) AS `max` FROM `user_usr`";
     $result = mysql_query($query) or die(mysql_error());
     $row = mysql_fetch_assoc($result);
     $max = $row['max'];    

    $sql = 'select idcom_usr'           
    . ' from user_usr'
    . " where id_usr = '$max'"
    . ' order '
    . ' by id desc'
    . " limit 1";
    $result = mysql_query($sql);
    $ref = mysql_result($result,0,"idcom_usr");
    return $ref + 1;

    }           
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-07 19:04:32

您可以尝试使用触发器来实现您的目标

代码语言:javascript
运行
复制
CREATE TRIGGER tg_user_usr_insert
BEFORE INSERT ON user_usr
FOR EACH ROW
    SET NEW.idcom_usr = (SELECT COALESCE(MAX(idcom_usr), 0) + 1 FROM user_usr);

然后,当您插入新行时

代码语言:javascript
运行
复制
INSERT INTO user_usr (idcom_usr) VALUES (0),(0);

idcom_usr的值将由触发器分配。

这是演示。

即使由于某些原因,您在php中执行此操作而不是两个查询,您也只需要一个查询。

代码语言:javascript
运行
复制
SELECT COALESCE(MAX(idcom_usr), 0) + 1 next_value 
  FROM user_usr

注意:由于并发性,这种方法在负载较重时容易出错。

票数 2
EN

Stack Overflow用户

发布于 2013-06-07 17:30:43

您可以使用列。通过这种方式,您可以将工作从PHP转移到MySQL,这始终是一件好事。

哦对了还有 。它们不再由and are officially deprecated维护。看到了吗?相反,学习,并使用PDOMySQLi - this article将帮助您决定使用哪种方法。如果你选择PDO,here is a good tutorial

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16980638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档