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. 月ごとのカウントを取得するためのMysqlクエリ

    2. PHPを使用してjqplotグラフを作成する

    3. SQL Server Management Studioで複合キーを作成するにはどうすればよいですか?

    4. PostgreSQLで統計ターゲットを確認する