一段代码执行了2条sql,寓意是想让两个sql相呼应,但是今天出现了点问题,大神请看内容
程序员文章站
2022-05-24 17:44:45
...
因为数据库字段挺多,我就打个比方
详细信息表 list
用户表 user 有一个字段 num
我执行一个方法,该方法每次往list中插入一条数据时,同时往user表的num+1
上个月大概有20W的注册用户,我分别把这些用户的list表中的数量求了出来,并且与user表中num做了对比。
对比结果是大概有70人的list数据的数量,比num所记录的数量少大概10条左右。
因为方法是先后执行的,大概是这样的先后顺序
public function test(){
insert $data;
update num+1;
}
先往list里面插入,后更新的user num字段
我想问一下,想这种数据不同步的情况都会在什么情况下发生。求别让贴代码。
大哥,一般什么情况下会失败, 感觉没什么情况啊,就是一条insert语句,用户名是手机号。字段也都可以为空
肯定过滤了,那天写了一个监控,结果到现在没出问题,等出问题就知道啥情况了,thanks 哥们。
详细信息表 list
用户表 user 有一个字段 num
我执行一个方法,该方法每次往list中插入一条数据时,同时往user表的num+1
上个月大概有20W的注册用户,我分别把这些用户的list表中的数量求了出来,并且与user表中num做了对比。
对比结果是大概有70人的list数据的数量,比num所记录的数量少大概10条左右。
因为方法是先后执行的,大概是这样的先后顺序
public function test(){
insert $data;
update num+1;
}
先往list里面插入,后更新的user num字段
我想问一下,想这种数据不同步的情况都会在什么情况下发生。求别让贴代码。
回复讨论(解决方案)
你这个应该要使用 事务
当 insert $data 或 update num+1 失败时就撤销操作
是否用了事务处理? 是否判断插入成功后再更新字段
insert $data;失败了但仍然执行了update num+1;就会不一致啦
是否用了事务处理? 是否判断插入成功后再更新字段
insert $data;失败了但仍然执行了update num+1;就会不一致啦
大哥,一般什么情况下会失败, 感觉没什么情况啊,就是一条insert语句,用户名是手机号。字段也都可以为空
手机号重复,写入值和字段类型不一致 都可能失败的
你写入数据库前应该过滤用户数据
手机号重复,写入值和字段类型不一致 都可能失败的
你写入数据库前应该过滤用户数据
肯定过滤了,那天写了一个监控,结果到现在没出问题,等出问题就知道啥情况了,thanks 哥们。