Está en la página 1de 9

Control de Transacciones

Propiedades de la transaccin

PROPIEDADES DE LA TRANSACCIN Una transaccin puede ser definida como la ejecucin de una coleccin de acciones que realiza una funcin administrativa accesando a una base de datos compartida transformando los estados de sta, usualmente en representacin de un usuario y que preserva la consistencia del sistema. Por ejemplo, reservar o comprar un pasaje areo, verificar el saldo de una tarjeta de crdito, ordenar la compra de un producto usando un catlogo en Internet, bajar un video clip, etc.

LAS PROPIEDADES FUNDAMENTALES DE UNA TRANSACCIN SON LAS SIGUIENTES :

Atomicidad: Se refiere al hecho de que una transaccin se trata como una unidad de operacin. Por lo tanto, o todas las acciones de la transaccin se realizan o ninguna de ellas se lleva a cabo. La atomicidad requiere que si una transaccin se interrumpe por una falla, sus resultados parciales sean anulados.
Consistencia: La consistencia de una transaccin es simplemente su correctitud. En otras palabras, una transaccin es un programa correcto que lleva a la base de datos de un estado consistente a otro con la misma caracterstica. Debido a esto, las transacciones no violan las restricciones de integridad de una base de datos. Aislamiento: Una transaccin en ejecucin no puede revelar sus resultados a otras transacciones concurrentes antes de finalizar. Ms an, si varias transacciones se ejecutan concurrentemente, los resultados deben ser los mismos que si ellas se hubieran ejecutado de manera secuencial.

Permanencia: Es la propiedad de las transacciones que asegura que una vez que una transaccin finaliza exitosamente, sus resultados son permanentes y no pueden ser borrados de la base de datos por alguna falla posterior. Por lo tanto, los sistemas manejadores de base de datos aseguran que los resultados de una transaccin sobrevivirn a fallas del sistema. Esta propiedad motiva el aspecto de recuperacin de base de datos, el cual trata sobre cmo recuperar la base de datos a un estado consistente donde todas las acciones que han finalizado con xito queden reflejadas en la base. Atomicidad de fallas: Consiste en efectuar todas las transacciones, pero en caso de falla no se realiza ninguna. Seriabilidad: Consiste en asegurarse que los cambios siguen un orden adecuado.

Aborto de transacciones propio para cada transaccin: Es la capacidad que se tiene para abortar el proceso transaccional en cualquier punto, el resultado de esta operacin no puede ser revelado para otras transacciones. Punto de inicio y terminacin: Consiste en especificar un bloque inicial y un punto que termina el fin de ese bloque.

EJEMPLOS DE TRANSACCIONES shell> mysql test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 to server version: 3.23.50-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE TABLE CUSTOMER (A INT, B CHAR (20), INDEX (A)) -> ENGINE=InnoDB; Query OK, 0 rows affected (0.00 sec) mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO CUSTOMER VALUES (10, 'Heikki'); Query OK, 1 row affected (0.00 sec) mysql> COMMIT; Query OK, 0 rows affected (0.00 sec) mysql> SET AUTOCOMMIT=0; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO CUSTOMER VALUES (15, 'John'); Query OK, 1 row affected (0.00 sec)

mysql> ROLLBACK; Query OK, 0 rows affected (0.00 sec) mysql> SELECT * FROM CUSTOMER; +------+--------+ |A |B | +------+--------+ | 10 | Heikki | +------+--------+ 1 row in set (0.00 sec) mysql>

OTRO EJEMPLO: Vamos a realizar una transaccin que modifica el precio de dos productos de la base de datos. USE NorthWind DECLARE @Error int --Declaramos una variable que utilizaremos para almacenar un posible cdigo de error

BEGIN TRAN --Iniciamos la transaccin UPDATE Products SET UnitPrice=20 WHERE ProductName ='Chai' --Ejecutamos la primera sentencia SET @Error=@@ERROR --Si ocurre un error almacenamos su cdigo en @Error --y saltamos al trozo de cdigo que deshara la transaccin. Si, eso de ah es un --GOTO, el demonio de los programadores, pero no pasa nada por usarlo --cuando es necesario IF (@Error<>0) GOTO TratarError --Si la primera sentencia se ejecuta con xito, pasamos a la segunda UPDATE Products SET UnitPrice=20 WHERE ProductName='Chang' SET @Error=@@ERROR --Y si hay un error hacemos como antes IF (@Error<>0) GOTO TratarError

--Si llegamos hasta aqu es que los dos UPDATE se han completado con --xito y podemos "guardar" la transaccin en la base de datos COMMIT TRAN TratarError: --Si ha ocurrido algn error llegamos hasta aqu If @@Error<>0 THEN BEGIN PRINT 'Ha ecorrido un error. Abortamos la transaccin' --Se lo comunicamos al usuario y deshacemos la transaccin --todo volver a estar como si nada hubiera ocurrido ROLLBACK TRAN END

También podría gustarte