场景是:
表单里有两部分数据(A部分 B部分) 在mysql数据库表的一条记录里
我先insert一条记录到一张表里 这里是A部分post过来的表单数据
接着将B部分POST过来的数据 更新到刚才这条记录里
这两次操作中如果中间服务或数据库出错
如何避免只往数据库里写入了部分数据?
判断一下是否全了 再删除重新执行?这样貌似效率很低
场景是:
表单里有两部分数据(A部分 B部分) 在mysql数据库表的一条记录里
我先insert一条记录到一张表里 这里是A部分post过来的表单数据
接着将B部分POST过来的数据 更新到刚才这条记录里
这两次操作中如果中间服务或数据库出错
如何避免只往数据库里写入了部分数据?
判断一下是否全了 再删除重新执行?这样貌似效率很低
他的意思是两次请求 A表单和B表单都是同一条数据
根据业务可以先把A表单或者B表单数据存在session或者缓存里面
当A和B的表单数据都存在在进行写入操作然后再一次写入成功
清除缓存
这个方案要避免缓存被清理
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
1.用事务啊,要么全执行,中间失败则全部回滚。
2.如果是新增的脏数据,比如快速点击注册,注册了两次,可以使用原子锁。
原子锁(依托于redis实现)的代码:
注:用的laravel