为什么我的交易没有回滚?

时间:2017-01-18 07:28:23

标签: c++ mysql qt qt4

 try
    {
       qDebug()<<connector.db.transaction();
        QSqlQuery *query=new QSqlQuery(connector.db);
                query->prepare("UPDATE partstore SET Name =? ,ID=?,SellingPrice=?, Quantity=? WHERE ID=?");
                query->addBindValue(ui->lineEdit_Name->text());
                query->addBindValue(ui->lineEdit_ID->text());
                query->addBindValue(ui->lineEdit_SP->text());
                query->addBindValue(ui->lineEdit_Quantity->text());
                query->addBindValue(prevID);

                QSqlQuery *query2=new QSqlQuery(connector.db);
                query2->prepare("UPDATE partstock SET ID=? WHERE ID=?");
                query2->addBindValue(ui->lineEdit_ID->text());
                query2->addBindValue(prevID);

      qDebug()<<  connector.db.commit();
        if(!query->exec())
        {
            throw 1;
        }
        qDebug()<<"q1executed";
        throw 1;
        if(!query2->exec())
        {
            throw 1;
        }
        qDebug()<<"q2executed";
         prevID=ui->lineEdit_ID->text();
         ID=ui->lineEdit_ID->text();

    }
    catch (...)
    {
        qDebug()<<"Executrion failed";
       qDebug() <<connector.db.rollback();
    }

使用throw 1;在查询之间应该回滚事务但它不是,为什么? 我在两个查询之间使用throw 1来检查回滚是否正常工作并且回滚不起作用但是执行失败被调试。

0 个答案:

没有答案