Transacciones

Necesito que alguno de vosotros me pudiera mandar información o códigos de ejemplo de cómo realizar transacciones por medio de Visual Basic y trabajando con un servidor SQL Server.
Utilizo bastantes recordsets, y mi pregunta también sería si se pueden hacer transacciones por medio de los recordsets, o me tengo que meter con lenguaje SQL.
Muchas gracias a todos y ánimo con la página, que es cojonuda

1 Respuesta

Respuesta
1
Primero te voy a explicar básicamente lo que es una transacción.
Una transacción sirve para garantizar la consistencia de datos; por ejemplo en un banco, cuando se hace una transferencia bancaria, hay 2 operaciones básicas: -Debitar el dinero de el CLiente A y -Acreeditar el dinero en el cliente B
Si por por motivo, falla una de las 2 operaciones, el sistema no debe hacer ningún cambio debido a los problemas que ocasionaría.
Las transacciones se aplican "POR CONEXIÓN" uno no puede:
- Comenzar una transacción, cerrar la conexión y terminar la transacción
- Abrir una transacción y luego terminarla desde otra pc cliente
Básicamente es esto, ¿ahora cuándo usar transacciones?
Solamente cuándo tengas 2 o más consultas de Inserción, Modificación o Eliminación de datos que requieran que se haga el "TODO O NADA"
¿Cuándo no usarlo?
-Cuándo no sea necesario
-Cuándo estés haciendo una consulta de visualización "SELECT"
-Cuándo solo tengas 1 consulta de "Inserción, Modificación o Eliminación" ya que este YA ES UNA TRANSACCIÓN.
Te lo pongo en mayúsculas ya que este es un error muy común en gente que recién comienza con transacciones
¿Qué desventajas tiene?
'Te bloquea la tabla completa o el registro; según el tipo de bloqueos que tenga.
Ahora lo más importante:
¿Cómo se usa?
Se pueden usar de 2 formas: (desde visual)
A)
on error goto CerrarTrans
Conexión. Begintrans
Rs1. Addnew
[...]
rs2.addnew
[...]
conexión.committrans
exit sub
CerrarTrans:
Conexión. Rollback
end sub
Esto es más claro, si falla algunos de los addnew no aplica ningún cambio.
Esto también se aplica si usás para insertar/modificar/borrar consultas sql del estilo conexión.execute "insert ..."
B)
También existen transacciones anidadas:
on error goto CerrarTrans
Conexión. Begintrans
Rs1. Addnew
[...]
Conexión. Begintrans
Rs2. Addnew
[...]
rs3.addnew
[...]
conexión.committrans
Conexión. Begintrans
Rs4. Addnew
[...]
rs5.addnew
[...]
conexión.committrans
conexión.committrans
exit sub
CerrarTrans:
Conexión. Rollback
end sub
¿Qué es lo que ocurre acá?
Si falla alguna, da vuelta todo atrás, menos las transacciones que hayan tenido ya un COMMIT correcto
Bueno, la verdad que me emocioné y me escribí un tutorial bastante lindo!
Muchas gracias André, perdona por tardar en contestar pero estuve muy liado. Ya he hecho unas pruebecillas y me va bien.
Gracias de nuevo y saludos!
Cesar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas