PHP+MYsql 数据库后一条记录以前一条记录的某个值+1,怎么防止添加时出现两个相同的值

PHP+MYsql 数据库后一条记录以前一条记录的某个值+1,怎么防止添加时出现两个相同的值,第1张

PHP+MYsql 数据库后一条记录以前一条记录的某个值+1,怎么防止添加时出现两个相同的值,第2张

现在有一场景要用到这样一个字段,
值为 0-999 递增数值。以天为条件值唯一
后一记录在前一个记录的值上加 1.直到 999 结束
我现在是每次存入数据库之前查询最后一条记录的值+1 ,
今天出现在两个相同的值,
怎么防止两个查询同时进行而产生的相同的值?
不能用自增,因为

----------------------- 以下是精选回复-----------------------

答:用联合索引约束
答:比如你的数据库里面有两个字段 一个叫 day_id 一个叫 day 在数据库里面加个 day_day_id 的联合索引能保证这两个字段联合起来的数据是唯一的 具体怎么加你可以再去查查
这样的话 同时查询的时候会有一个查询失败 一个成功 失败的重新再另行处理
答:表要设置唯一字段, Unique key (s )
答:联合自增
答:为何不加锁。。。
答:加锁就好,
答:记得前两天有过类似的一个帖子
说是一天产生 0~999 的流水号的
如果那个帖子是楼主的
那么,一天 86400 秒才产生 999 个流水号的业务
你需要
lock tables `table_name` write;
答:锁表就行了
答:写锁
索引
触发器

基本就这 3 种做法吧。
答:将这个数字放到程序的全局变量,如果你只有一个线程的话。
答:小处理,弄一个临时表(一个自增字段)是最简单的。
答:这不就是类似线程同步么,加锁撒
答:和提交数量根本无关,只要有两个并发你这就会出事
话说一半,为什么不能用自增呢

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » PHP+MYsql 数据库后一条记录以前一条记录的某个值+1,怎么防止添加时出现两个相同的值

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情