ActiveRecord 这个class文件update方法里面如何下:
public function update($runValidation = true, $attributeNames = null)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <code>{
if ( $runValidation && ! $this ->validate( $attributeNames )) {
Yii::info( 'Model not updated due to validation error.' , __METHOD__ );
return false;
}
if (! $this ->isTransactional(self::OP_UPDATE)) {
return $this ->updateInternal( $attributeNames );
}
$transaction = static ::getDb()->beginTransaction();
try {
$result = $this ->updateInternal( $attributeNames );
if ( $result === false) {
$transaction ->rollBack();
} else {
$transaction ->commit();
}
return $result ;
} catch (\Exception $e ) {
$transaction ->rollBack();
throw $e ;
}
}
</code>
|
登入後複製
登入後複製
为什么update底层也用了事务操作,如果在外面也开启事务,事务嵌套,会造成什么影响?
回复内容:
ActiveRecord 这个class文件update方法里面如何下:
public function update($runValidation = true, $attributeNames = null)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <code>{
if ( $runValidation && ! $this ->validate( $attributeNames )) {
Yii::info( 'Model not updated due to validation error.' , __METHOD__ );
return false;
}
if (! $this ->isTransactional(self::OP_UPDATE)) {
return $this ->updateInternal( $attributeNames );
}
$transaction = static ::getDb()->beginTransaction();
try {
$result = $this ->updateInternal( $attributeNames );
if ( $result === false) {
$transaction ->rollBack();
} else {
$transaction ->commit();
}
return $result ;
} catch (\Exception $e ) {
$transaction ->rollBack();
throw $e ;
}
}
</code>
|
登入後複製
登入後複製
为什么update底层也用了事务操作,如果在外面也开启事务,事务嵌套,会造成什么影响?