sql >> データベース >  >> RDS >> Mysql

node.jsmysqlプールbeginTransaction&connection

    トランザクションは複数のデータベース接続で共有することはできず、常に単一の接続に制限されます。最善のアプローチは、トランザクションを開始する前にプールから接続を取得し、ロールバックまたはコミット後に接続を解放することです。

    pool.getConnection(function(err, connection) {
        connection.beginTransaction(function(err) {
            if (err) {                  //Transaction Error (Rollback and release connection)
                connection.rollback(function() {
                    connection.release();
                    //Failure
                });
            } else {
                connection.query('INSERT INTO X SET ?', [X], function(err, results) {
                    if (err) {          //Query Error (Rollback and release connection)
                        connection.rollback(function() {
                            connection.release();
                            //Failure
                        });
                    } else {
                        connection.commit(function(err) {
                            if (err) {
                                connection.rollback(function() {
                                    connection.release();
                                    //Failure
                                });
                            } else {
                                connection.release();
                                //Success
                            }
                        });
                    }
                });
            }    
        });
    });
    



    1. Mysqlの行サイズの変更制限が大きすぎます

    2. FROM_BASE64()関数がMySQLでどのように機能するか

    3. Oracleの集計を使用したテーブルの回転/ピボット

    4. アクティブな接続がある場合にPostgreSQLデータベースを削除するにはどうすればよいですか?