如果未调用回滚,则AUTO INCREMENT字段不会回滚

时间:2014-09-21 18:44:59

标签: c# mysql transactions

我正在使用MySQL的AUTO_INCREMENT字段和InnoDB来支持事务。我注意到当我回滚事务时,AUTO_INCREMENT字段没有回滚? 但是当我不调用RollBack时,id不会改变。

try
{

//My Code
}
catch (MySqlException ex)
{
    //deadlock exception in mysql   
    if (ex.Number == 1213)
    {
        //I don't use RollBack and the id dosen't change
        MessageBox.Show("Try again", "Warning");
    }
    else
    {
        msqlTr.Rollback();
        txtError.Text = "Erreur : " + ex.Message;
        Log.LogError.setError(ex);
        MessageBox.Show("Erreur : " + ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
catch (Exception ex)
{
    msqlTr.Rollback();
    txtError.Text = "Erreur : " + ex.Message;
    Log.LogError.setError(ex);
    MessageBox.Show("Erreur : " + ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

如果此代码更正,我的意思是当我不调用rollback时?

1 个答案:

答案 0 :(得分:0)

身份增量发生在交易之外。这是按预期工作的。

MySQL AUTO_INCREMENT does not ROLLBACK