Rumah >pembangunan bahagian belakang >tutorial php >一段代码执行了2条sql,寓意是想让两个sql相呼应,但是今天出现了点问题,大神请看内容

一段代码执行了2条sql,寓意是想让两个sql相呼应,但是今天出现了点问题,大神请看内容

WBOY
WBOYasal
2016-06-20 12:34:29941semak imbas

因为数据库字段挺多,我就打个比方
详细信息表   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 哥们。
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn