PHP执行多条sql语句插入或更新一条记录时如何避免脏数据?
场景是:
表单里有两部分数据(A部分 B部分) 在mysql数据库表的一条记录里
我先insert一条记录到一张表里 这里是A部分post过来的表单数据
接着将B部分POST过来的数据 更新到刚才这条记录里
这两次操作中如果中间服务或数据库出错
如何避免只往数据库里写入了部分数据?
判断一下是否全了 再删除重新执行?这样貌似效率很低
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
1.用事务啊,要么全执行,中间失败则全部回滚。
2.如果是新增的脏数据,比如快速点击注册,注册了两次,可以使用原子锁。
原子锁(依托于redis实现)的代码:
注:用的laravel
他的意思是两次请求 A表单和B表单都是同一条数据
根据业务可以先把A表单或者B表单数据存在session或者缓存里面
当A和B的表单数据都存在在进行写入操作然后再一次写入成功
清除缓存
这个方案要避免缓存被清理