首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql,如何读取相同插入行的其他字段中的自动增量值?

问Mysql,如何读取相同插入行的其他字段中的自动增量值?
EN

Stack Overflow用户
提问于 2015-01-13 15:45:02
回答 2查看 569关注 0票数 0

你好,我需要在我的事务的注释字段中有事务id

代码语言:javascript
复制
mysql_query("INSERT INTO `transactiontb` (`tid`, `amount`, `comment`) VALUES (NULL,'$amount', CONCAT('Transaction # ',`tid`)')");

我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-13 15:51:37

  1. 离开mysql_*函数。看看MySQLi或PDO。
  2. 不要存储tid两次。为什么不选择它而不是以这种方式存储它呢?这不是最好的办法。

不过,作为参考,请尝试使用LAST_INSERT_ID()+1)

代码语言:javascript
复制
INSERT INTO `transactiontb` (`tid`, `amount`, `comment`)
VALUES (NULL, '$amount', CONCAT_WS('Transaction # ', LAST_INSERT_ID()+1))

LAST_INSERT_ID()将提供上一次插入的ID,而不是当前插入的ID,因此必须添加1。

最后-插入-id

生成的ID是在每个连接的基础上在服务器中维护的。这意味着函数返回给给定客户端的值是为影响该客户端的AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值。此值不受其他客户端的影响,即使它们生成自己的AUTO_INCREMENT值。这种行为确保每个客户端都可以检索自己的ID,而不必关心其他客户端的活动,也不需要锁或事务。

票数 2
EN

Stack Overflow用户

发布于 2015-01-13 15:51:18

使用LAST_INSERT_ID()函数。

LAST_INSERT_ID() (不带任何参数)返回一个BIGINT (64位)值,该值表示最近执行的INSERT语句为AUTO_INCREMENT列设置的第一个自动生成的值,以影响该列。

来源:MySQL文档

示例:

代码语言:javascript
复制
"INSERT INTO transactiontb(tid, amount, comment) VALUES (NULL,'" . $amount . "', CONCAT_WS('#','Transaction',LAST_INSERT_ID(id+1)))"

刚才看到您还忘了为您的CONCAT_WS函数放置分隔符,所以我在示例查询中修复了它。

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

https://stackoverflow.com/questions/27925926

复制
相关文章

相似问题

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