Transaction: IsolationLevel Serializable
Har jeg forstået det ret: Laver nedenstående kode en pessimistic locking, forstået på den måde, at den læser og låser table1, så andre processer ikke kan læse i den, derefter tager sig af table2, og så endelig låser det hele op igen? Altså har denne transaktion eksklusiv adgang til databasen sålænge den er i gang?String connectionStringMySQL ="lalalala...";
OdbcCommand command = new OdbcCommand();
OdbcTransaction trans = null;
OdbcConnection conn = new OdbcConnection(connectionStringMySQL);
OdbcDataReader reader = null;
command.Connection = conn;
try
{
conn.Open();
trans = conn.BeginTransaction(IsolationLevel.Serializable);
command.Transaction = trans;
command.CommandText = "SELECT * from table1 WHERE ID=1";
reader = command.ExecuteReader();
reader.Read();
reader.Dispose();
command.Parameters.Clear();
command.CommandText = "INSERT INTO table2 (id) values (3)";
command.ExecuteNonQuery();
trans.Commit();
}
catch (Exception e)
{
trans.Rollback();
throw e;
}
finally
{
try { conn.Close(); }
catch (Exception) { }
}