准備:
表必須是InnoDB引擎
DB::beginTransaction(); try{ $name = 'abc'; $result1 = Test::create(['name'=>$name]); if (!$result1) { /** * Exception類接收的參數 * $message = "", $code = 0, Exception $previous = null */ throw new \Exception("1"); } $result2 = Test::create(['name'=>$name]); if (!$result2) { throw new \Exception("2"); } DB::commit(); } catch (\Exception $e){ DB::rollback();//事務回滾 echo $e->getMessage(); echo $e->getCode(); }
注意:如果id是自增的話,mysql的primary key是在內存中維護的,事務回滾是不會回退id,所以中間會出現斷層