MySQL中的事务 - 无法回滚

时间:2011-03-16 21:59:39

标签: c# mysql transactions rollback

我正在使用MySQL 5.0.27并且正在尝试让事务正常工作。我遵循了这个教程:

http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqltransaction.html

仍然无法让这些工作。我试图更新的表是InnoDB,并尝试执行'set autocommit = 0'但它似乎没有做任何事情....我写的代码如下:

public int transactionUpdate()
{
    MySqlConnection connection = new MySqlConnection(connStr);
    connection.Open();
    MySqlCommand command = connection.CreateCommand();
    MySqlTransaction trans;
    trans = connection.BeginTransaction();
    command.Connection = connection;
    command.Transaction = trans;
    try
    {
        command.CommandText = "SET autocommit = 0";
        command.executeNonQuery();
        command.CommandText = "UPDATE TBL.rec_lang rl SET rl.lang_code = 'en-us' WHERE rl.recording=123456";
        command.executeNonQuery();
        command.CommandText = "UPDATE TBL.rec_lang rl SET rl.lang_code = en-us WHERE rl.recording=123456";      
        command.executeNonQuery();
        trans.Commit();
    }
    catch(Exception ex)
    {
        try
        {
            trans.Rollback();
        }
        catch(MySqlException mse)
        {
            log.error(mse);
        }
    }
}

第二个命令失败,因为它缺少'around'en-us'。这应该回滚第一个查询以及之前的值,但事实并非如此。你能告诉我我做错了吗?

MySQLConnector v.6.3.6.0

MySQL v.5.0.27

C#VS2010

1 个答案:

答案 0 :(得分:3)

我打开了第二个数据库,其数据显示错误>< ...此方法有效。事实证明我甚至不需要:

command.CommandText = "SET autocommit = 0";  
command.executeNonQuery();

所以这段代码适用于交易。