【问题标题】:Can you have multiple MySqlCommand's in a single transaction?你可以在一个事务中拥有多个 MySqlCommand 吗?
【发布时间】:2009-03-16 18:23:07
【问题描述】:

我想对 2 个单独的表进行插入和更新,但让它们在 1 个事务中)。

基本上在伪代码中我想做类似的事情:

MySqlTransaction trans = null;
try
{
    _Connection.Open();
    trans = _Connection.BeginTransaction();
    insertCmd.Transaction = trans;
    updateCmd.Transaction = trans;

    Int32 id = insertCmd.ExecuteNonQuery();
    updateCmd.Parameters.Add(new MySqlParameter("oid", MySqlDbType.Int32).Value = id);
    updateCmd.ExecuteNonQuery();
}
catch(MySqlException)
{
    if(trans != null)
        trans.RollBack();
}
finally
{
    _Connection.Close();
}

这可能吗?还是我走错了路?

【问题讨论】:

    标签: c# mysql transactions


    【解决方案1】:

    是的,如果:

    • 所有表都支持,(InnoDB 表支持,但 MyIsam 表不支持)
    • 查询不影响数据库模式。 (ALTER TABLE、DROP TABLE、CREATE TABLE 等会导致事务提交)

    【讨论】:

      【解决方案2】:

      是的,您可以在单个事务中执行多个命令。这可以让你做你想做的事:所有命令,或者一个都不做。

      【讨论】:

        猜你喜欢
        • 2014-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-05
        • 2016-10-31
        • 2018-11-05
        • 1970-01-01
        • 2011-01-14
        相关资源
        最近更新 更多