La Web del Programador: Comunidad de Programadores
 
    Pregunta:  47476 - COMO FUNCIONAN LAS TRANSACCIONES EN VISUALBASIC .NET??
Autor:  Katycita
Hola chikos....tengo una pregunta sobre transacciones en .NET

myTrans = sqlconexion.BeginTransaction

\'bloque transaccional

metodo1()
metodo2()
agregarFilas()
etc,,,,
...

myTrans.Commit()

la pregunta es la siguiente.....dentro del bloque transaccional..¿que es lo que exactamente pasa? se que las instrucciones sql que se ejecuten dentro de dicho bloque se ejecutan en unidad o no se ejecutan....pero quiero saber de que manera el compilador realiza.

Yo supongo que....mientras el compilador lee el BeginTransaccion() lo que hace es bloquear la base de datos para que cualquier otro usuario no la pueda modificar, esto justamente asegura de que sea una transaccion, y con Commit() simplemente ya se libera el bloqueo que permite que otros usuarios ya puedan utilizar la base de datos...es cierto eso?? o en todo caso..que es lo que en verdad sucede dentro del bloque:

myTrans = sqlconexion.BeginTransaction
...
...
myTrans.Commit()

muchas gracias....me es urgente saber eso¡¡¡¡

  Respuesta:  William Fallas Coto
En realidad el bloqueo no lo hace el compilador, el bloqueo lo hace el motor de base datos, el programa en .net, lo unico que hace es mandarle a decir al motor de base de datos que abra una transaccion para el grupo de ejecucion de comandos sql, sean atomicos.

cuando ejecutas los sql , el motor de base de datos hace estos cambios en un espacio temporal, cuando le dices commit, el motor hace efectivos esos cambios en la bd.

si quieres informacion mas amplia puedes buscar en los books on-line de sql server, ahi veras los tipos de transacciones, como se bloquean las paginas de datos etc