Uso de sqltransation, rollback and commit Vb.net

Servicios de Desarrollo Web, Software y Aplicaciones moviles, & Soporte tecnico, blog oficial de tecnologia y mas

Uso de sqltransation, rollback and commit Vb.net

Todo lo referente a practicas en Visual Studio

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.

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.

Vb.net

Conclusión

Los procesos de SqlTransactionrollback 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:

Documentacion de https://msdn.microsoft.com/

https://forums.asp.net/t/1166177.aspx

 

Deja un comentario