In MySQL, only InnoDB and BDB (BerkeleyDB) table formats support transactions. Other standard storage engines ignore transactions and can not rollback data modifications.
public void RunMySqlTransaction(string myConnString) { MySqlConnection myConnection = new MySqlConnection(myConnString); myConnection.Open(); MySqlCommand myCommand = new MySqlCommand(); myConnection.BeginTransaction(); try { myCommand.CommandText = "INSERT INTO Test.Dept(DeptNo, DName) Values(50, 'DEVELOPMENT')"; myCommand.ExecuteNonQuery(); myCommand.CommandText = "INSERT INTO Test.Dept(DeptNo, DName) Values(60, 'PRODUCTION')"; myCommand.ExecuteNonQuery(); myConnection.Commit(); Console.WriteLine("Both records are written to database."); } catch(Exception e) { myConnection.Rollback(); Console.WriteLine(e.ToString()); Console.WriteLine("Neither record was written to database."); } finally { myConnection.Close(); } }
Public Sub RunMySqlTransaction(myConnString As String) Dim myConnection As New MySqlConnection(myConnString) myConnection.Open() Dim myCommand As New MySqlCommand() myConnection.BeginTransaction() Try myCommand.CommandText = "INSERT INTO Test.Dept(DeptNo, DName) Values(50, 'DEVELOPMENT')" myCommand.ExecuteNonQuery() myCommand.CommandText = "INSERT INTO Test.Dept(DeptNo, DName) Values(60, 'PRODUCTION')" myCommand.ExecuteNonQuery() myConnection.Commit() Console.WriteLine("Both records are written to database.") Catch e As Exception myConnection.Rollback() Console.WriteLine(e.ToString()) Console.WriteLine("Neither record was written to database.") Finally myConnection.Close() End Try End Sub