我想在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(); }
这是可能的还是我以错误的方式解决这个问题?
是的,你可以:
所有表都支持它,(InnoDB表支持它,但MyIsam表不支持)
查询不会影响数据库架构.(ALTER TABLE,DROP TABLE,CREATE TABLE等导致事务提交)