Importante usar SqlTransaction em uma seqüencia de transações, onde uma depende da outra.
Ou seja, várias tabelas com dados vinculados e se ocorrer algum erro durante a execução da transação, a transação pode ser revertida. Evitando algum problema decorrente de uma transação parcial, e talvez uma grande dor de cabeça.
Exemplo de SqlTransaction com try/catch e Commit/Rollback.
using (SqlConnection Conn = new SqlConnection(sConnectionString))
{
Conn.Open();
//Iniciando uma transação
SqlTransaction trans = Conn.BeginTransaction("myTransaction");
try
{
//SqlCommand(string SQL, conexão, e transação);
string sSQL = "DELETE FROM tblUsuario WHERE userID = @id";
SqlCommand cmd = new SqlCommand(sSQL, Conn, trans);
cmd.Parameters.AddWithValue("@id", 1);
cmd.ExecuteNonQuery();
//Mantenho o mesmo CommandText, apenas altero o valor do Parameter @id
cmd.Parameters["@id"].Value = 2;
cmd.ExecuteNonQuery();
//Confirmando a transação.
trans.Commit();
Response.Write("Dados apagados");
}
catch (Exception ex)
{
//Reverte a transação (Rollback) se acontecer algum erro na transação
trans.Rollback("myTransaction");
Response.Write("Rollback, erro:" + ex.Message);
}
Conn.Close();
}