准備:
表必須是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,所以中間會出現斷層
