Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвате правилно MySQL транзакциите

Най-добрият ви залог е да емулирате вложени транзакции. За да направите това, напишете обвивка за достъп до вашата база данни.(pseduocode)

class MyMysqli {
    protected $realDb;
    protected $transaction_count =0;

    public function __construct ($host, $username , $passwd, $dbname){
        $this->realDb = new Mysqli($host, $username, $passwd, $dbname);
    }
    public function __get($property){
        return $this->realDb->$property;
    }

    public function __set($property, $value){
        return $this->realDb->$property = $value;
    }

    public function __call($method, $args){
        return call_user_func_array(array($this->realDb, $method), $args);
    }

    // overload begin_transaction, commit and rollback
    public function begin_transaction(){
         $this->transaction_count++;
         if ($this->transaction_count == 1){
               $this->realDb->begin_transaction();
         }
    }
    public function commit(){
         $this->transaction_count--;
         if($this->transaction_count == 0){
              $this->realDb->commit();
         }
    }

    public function rollback(){
         throw new Exception("Error");
    }



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqld:Не мога да променя директорията в данни. Сървърът не се стартира

  2. Грешка при рестартирането на Openshift MySQL касетата

  3. Как да получа днешни/вчерашни данни от MySQL база данни?

  4. MaxListenersExceededWarning:Открит е възможен теч на памет на EventEmitter. Добавени са 11 списъка на съобщенията. Използвайте emitter.setMaxListeners(), за да увеличите лимита

  5. Запитване на низ от колона int?