Uso de sqltransation, rollback and commit Vb.net
Entendiendo SqlTransaction, Rollback y Commit en SQL aplicado a Vb.net.
SqlTransaction
SqlTransaction es un objeto en SQL que permite agrupar una serie de operaciones en una única unidad de trabajo. Esto significa que todas las operaciones dentro de una transacción deben completarse con éxito para que los cambios se apliquen a la base de datos. Si alguna operación falla, se puede revertir toda la transacción para mantener la integridad de los datos.
Thank you for reading this post, don't forget to subscribe!Ejemplo: Imagina que estás realizando una transferencia bancaria. La transacción incluiría verificar el saldo, deducir el monto de una cuenta y agregarlo a otra. Si alguna de estas operaciones falla, ninguna de las otras debería aplicarse.
Rollback
Rollback es una operación que se utiliza para deshacer todos los cambios realizados por una transacción en caso de que ocurra un error o se decida no continuar con la transacción. Esto asegura que la base de datos vuelva a su estado original antes de que comenzara la transacción.
Ejemplo: Siguiendo con el ejemplo de la transferencia bancaria, si después de deducir el monto de la cuenta del remitente ocurre un error al agregar el monto a la cuenta del destinatario, el rollback revertiría la deducción, dejando ambas cuentas sin cambios.
Commit
Commit es la operación que finaliza una transacción, aplicando permanentemente todos los cambios realizados durante la transacción a la base de datos. Una vez que se realiza un commit, los cambios no se pueden deshacer3.
Ejemplo: En la transferencia bancaria, una vez que se ha verificado que todas las operaciones (deducción y adición de fondos) se han completado con éxito, se realiza un commit para confirmar y aplicar los cambios a ambas cuentas.
Conclusión
Los procesos de SqlTransaction, rollback y commit son fundamentales para garantizar la integridad y consistencia de los datos en una base de datos. Utilizar transacciones permite agrupar operaciones relacionadas, asegurando que se completen todas o ninguna. El rollback proporciona una forma de deshacer cambios en caso de error, mientras que el commit confirma y aplica los cambios de manera permanente. Comprender y utilizar estos conceptos es esencial para cualquier desarrollador que trabaje con bases de datos.
Para poder evitar que se graben cosas malas en tus tablas debes hacer rollback antes de cualquier commit para asi revertir los cambios y evitar información defectuosa en tu base de datos.
Ver el siguiente ejemplo en Vb.net
The following example creates a T:System.Data.SqlClient.SqlConnection and a T:System.Data.SqlClient.SqlTransaction.
It also demonstrates how to use the M:System.Data.SqlClient.SqlConnection.BeginTransaction, M:System.Data.SqlClient.SqlTransaction.Commit, and M:System.Data.SqlClient.SqlTransaction.Rollback methods.
The transaction is rolled back on any error. Try/Catch error handling is used to handle any errors when attempting to commit or roll back the transaction.
Código de Vb.net
Private Sub ExecuteSqlTransaction(ByVal connectionString As String) Using connection As New SqlConnection(connectionString) connection.Open() Dim command As SqlCommand = connection.CreateCommand() Dim transaction As SqlTransaction ' Start a local transaction transaction = connection.BeginTransaction("SampleTransaction") ' Must assign both transaction object and connection ' to Command object for a pending local transaction. command.Connection = connection command.Transaction = transaction Try command.CommandText = _ "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')" command.ExecuteNonQuery() command.CommandText = _ "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')" command.ExecuteNonQuery() ' Attempt to commit the transaction. transaction.Commit() Console.WriteLine("Both records are written to database.") Catch ex As Exception Console.WriteLine("Commit Exception Type: {0}", ex.GetType()) Console.WriteLine(" Message: {0}", ex.Message) ' Attempt to roll back the transaction. Try transaction.Rollback() Catch ex2 As Exception ' This catch block will handle any errors that may have occurred ' on the server that would cause the rollback to fail, such as ' a closed connection. Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType()) Console.WriteLine(" Message: {0}", ex2.Message) End Try End Try End Using End Sub
enlaces:
Comentarios recientes