全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
楼主: igoogle

关于MYSQL多线程插入,自增id的疑问

[复制链接]
发表于 2022-5-1 21:32:23 | 显示全部楼层
第一、自增ID用primary key自增。
第二、LAST_INSERT_ID
第三、id设置uniq,用try catch来获取max id
发表于 2022-5-1 21:32:30 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2022-5-1 21:46:58 | 显示全部楼层
Salta 发表于 2022-5-1 19:37
在多用户交替插入数据的情况下max(id)显然不能用。这时就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基 ...

感谢大佬解惑,涨姿势了。

还有一点疑问,火车采集使用的系统标签[文章编号:xxx],应该用的就是max id吧?
 楼主| 发表于 2022-5-1 21:48:03 | 显示全部楼层
cnly1987 发表于 2022-5-1 21:32
第一、自增ID用primary key自增。
第二、LAST_INSERT_ID
第三、id设置uniq,用try catch来获取max id

感谢大佬,涨知识了~~
 楼主| 发表于 2022-5-1 21:51:04 | 显示全部楼层
委员 发表于 2022-5-1 21:32
这么简单的问题 wp早考虑到了  用wp自带的方法就可以了

你没理解我的意思吧。。
就是多线程同时向wp插入文章,每次插入文章肯定还要给文章分类吧,wp的分类方法就是用文章的自增id来关联分类的。。
那么多线程的自增id,就有可能混乱
发表于 2022-5-1 23:27:17 | 显示全部楼层
Salta 发表于 2022-5-1 19:37
在多用户交替插入数据的情况下max(id)显然不能用。这时就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基 ...


作为菜鸟,我看的似懂非懂,但大受震撼
发表于 2022-5-1 23:30:52 | 显示全部楼层
igoogle 发表于 2022-5-1 21:46
感谢大佬解惑,涨姿势了。

还有一点疑问,火车采集使用的系统标签[文章编号:xxx],应该用的就是max id吧 ...


有很多方法
maxID
mysqli_insert_id()
或者使用 mysqli_fetch_all() 返回修改后的 数据集->ID  也可以获取到
发表于 2022-5-1 23:32:38 | 显示全部楼层
蜗牛也是牛 发表于 2022-5-1 23:27
作为菜鸟,我看的似懂非懂,但大受震撼

这不算很深的问题,就是一个基本的数据库多线程执行中遇见的问题,很简单...
发表于 2022-5-2 11:20:33 来自手机 | 显示全部楼层
难道你没发现插入失败 自增加id也在涨吗
 楼主| 发表于 2022-5-2 11:47:02 | 显示全部楼层
Salta 发表于 2022-5-1 19:37
在多用户交替插入数据的情况下max(id)显然不能用。这时就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基 ...

大佬,出问题了。。
用了LAST_INSERT_ID,发现有的文章获取到的自增id,是上一篇文章的id
就是获取到的自增id都很混乱。。

是不是,一组sql语句结束,后面要加上分号; 啊
否则同时火车头发布多篇文章的时候,有可能把多组sql同时执行了
这样后面的获取的自增id就有可能出错啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2026-5-11 11:29 , Processed in 0.066198 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表