Cómo usar transacciones
Enviado por ZilviTa GM • 10 de Marzo de 2016 • Tutorial • 1.214 Palabras (5 Páginas) • 375 Visitas
Cómo usar transacciones
Iniciar una transacción
Asociar comandos a una transacción
Como cometer (Commit) o deshacer (Rollback) una transacción
Como trabajar con puntos de salvado (save points)
Concurrencia y bloqueo
Los cuatro problemas de concurrencia que se pueden prevenir con transacciones.
Como trabajar con niveles de aislamiento (isolation levels).
Una aplicación que usa transacciones
Interfaz de usuario.
Código de la clase de base de datos InvoiceDB,
El código para el formulario de transferencia de pagos.
Perspectiva
[pic 1]
Transacciones
Una transacción es un grupo de comandos relacionados de base de datos que usted combina en una sola unidad lógica. Se aplica ACID.
Inicio de una transacción
[pic 2][pic 3][pic 4]
[pic 5][pic 6][pic 7][pic 8][pic 9][pic 10]
Asociar comandos con una transacción
Para usar una transacción, usted lo asocia con uno o más comandos. Para hacerlo usted asigna el objeto transacción a la propiedad Transaction de cada comando. Cada objeto comando debe asociarse al mismo objeto conexión con la cual se inició la transacción.
[pic 11]
Parámetros de la función y declaración de objetos
Parámetros
Se requiere saber desde que objeto factura (fromInvoice) hacia que objeto factura (toInvoice) transferir e indicar también el monto a ser transferido (payment).[pic 12][pic 13]
[pic 14][pic 15][pic 16][pic 17]
Para trabajar con transacciones se requiere un objeto conexión.
Para trabajar con transacciones se requiere un objeto transacción.
Ahora, los comandos
Primero el comando fromCommand
[pic 18][pic 19][pic 20][pic 21][pic 22]
Ahora el comando toCommand
[pic 23]
Vincular comandos con transacciones
[pic 24][pic 25][pic 26][pic 27]
[pic 28]
Se ejecuta la transacción
[pic 29][pic 30][pic 31][pic 32][pic 33][pic 34][pic 35][pic 36][pic 37][pic 38][pic 39][pic 40][pic 41][pic 42][pic 43]
[pic 44]
Save points
En Muchos casos, si usted necesita deshacer una transacción, entonces deshace TODA la transacción. Pero, en otros casos sería conveniente SALVAR todo lo actuado hasta el punto donde se produjo un error. A esto se le conoce como save point.
Para establecer un punto de guardado (save point) se usa el método Save de la transacción. Como argumento de este método usted proporciona un nombre, con el cuál será conocido este punto. Posteriormente para deshacer una transacción (roll back), hasta cierto punto, se menciona el nombre del save point.
Con los save point usted puede aún ejecutar el método Commit, pero sólo hasta un punto de salvado.
Métodos de la clase SqlTransaction para trabajar con save points
[pic 45]
Código con save points
[pic 46][pic 47][pic 48][pic 49][pic 50][pic 51][pic 52][pic 53][pic 54][pic 55][pic 56][pic 57][pic 58][pic 59][pic 60][pic 61][pic 62]
- Se crea el objeto transacción.
Se abre la conexión.
Se inicia la transacción.
- Se crea el objeto comando.
El comando eliminará un vendedor cuyo código se ha de proporcionar a través de un parámetro
Se ejecuta el comando para eliminar un vendedor (el 124, en este ejemplo)
- Se establece un save point llamado “Vendor1”
- Grupo de sentencias que permite eliminar el vendedor 125 y establecer un segundo save point llamado “Vendor2”.
- Grupo de sentencias que permite eliminar el vendedor 126.
- Se deshacen las transacciones hasta el punto Vendor2.
Cualquier proceso que se ejecutó después de este punto es deshecho. Esto significa que la tercera operación Delete es deshecha. Es decir la operación 5 que elimina al vendedor 126 es deshecha.
- Se deshacen las transacciones hasta el punto Vendor1.
Cualquier proceso que se ejecutó después de este punto es deshecho. Esto significa que la segunda y tercera operaciones Delete son deshechas. Es decir las operaciones que eliminan a los vendedores 125 y 126 son deshechas.
- Se comete la transacción.
Dado que la única operación Delete que no se ha deshecho es la primera, entonces esta será la única operación que se ejecutará en el Commit. Es decir se eliminará al vendedor 124.
[pic 63][pic 64][pic 65]
Concurrencia y bloqueo
Concurrencia
Cuando dos o más usuarios utilizan la misma BD, se presenta la posibilidad de que ambos puedan trabajar con los mismos datos, al mismo tiempo. La concurrencia no se presenta cuando se recuperan los datos sino que el problema surge cuando ambos quieren actualizar los mismos datos, al mismo tiempo.
...