比如注册,逻辑是首先插入数据到表a,然后根据返回结果来做一些判断,最后返回true或者false。现在的问题是,如果我在 做判断的时候发现错误了,那么表a的数据已经插入了,怎么办?能回滚吗?
ThinkPHP提供了单数据库的事务支持。举个例子:$m=D('YourModel');//或者是M();$m2=D('YouModel2');$m->startTrans();//在第一个模型里启用就可以了,或者第二个也行$result=$m->where('删除条件')->delete();$result2=m2->where('删除条件')->delete();if($result && $result2){$m->commit();//成功则提交}else{$m->rollback();//不成功,则回滚}
插入数据库的时候可以获取到插入的ID,然后根据你说的,判断失败拿刚刚插入的ID删除便是。
ID
至于你说的回滚,貌似从代码层回滚不了吧
代码层
ThinkPHP 的事务支持可以帮到你。
ThinkPHP - 事務支持
不是很明白你的意思 ,哪些判断不能在写入数据库前进行吗?