public function updateByPk($pk, $attributes, $condition = '', $params = array())
 {
     $transaction = $this->dbConnection->beginInternalTransaction();
     try {
         $this->versionToTable($this->commandBuilder->createPkCriteria($this->tableName(), $pk, $condition, $params));
         $result = parent::updateByPk($pk, $attributes, $condition, $params);
         $transaction->commit();
         return $result;
     } catch (Exception $e) {
         $transaction->rollback();
         throw $e;
     }
 }