jueves, 11 de abril de 2013

Modos de Operacion de un SGBD

MySQL



¿Qué es una transacción?
Secuencia de operaciones que se ejecutan completamente o bien no se realizan”.
§ No puede quedarse en un estado intermedio.
§ Ejemplo: una transferencia entre dos cuentas no puede quedarse en un estado intermedio: O se deja el dinero en la primera cuenta o en la segunda, pero no se puede sacar el dinero de la primera cuenta, que falle algo en ese momento y no entregarlo en la segunda.

Es una secuencia de una o varias instrucciones de SQL que forman conjuntamente una unidad lógica de trabajo. Cuando una transacción finaliza con éxito, se graba (COMMIT). Si fracasa, se restaura el estado anterior (ROLLBACK.



Instrucciones COMMIT y  ROLLBACK.
SQL acoge las transacciones de base de datos mediante dos instrucciones de procesamiento de transacciones de SQL:

§ COMMIT: La instrucción COMMIT señala la conclusión con éxito de una transacción. Indica al SGBD que la transacción se ha completado; se han ejecutado todas las instrucciones que conforman la transacción, y la base de datos es autoconsistente.

§ ROLLBACK: La instrucción ROLLBACK señala el fracaso de una transacción. Indica al SGBD que el usuario no desea completar la transacción; en lugar de ello, el SGBD debe volverse atrás de las modificaciones realizadas en las BD durante la transacción. En efecto, el SGBD devuelve la base de datos a su estado previo al comienzo de la transacción.




Ejemplo:

mysql> CREATE TABLE t (name CHAR(20), UNIQUE (name)) TYPE = INNODB;

mysql> BEGIN;

mysql> INSERT INTO t SET name = 'William';

mysql> INSERT INTO t SET name = 'Wallace';

mysql> COMMIT; mysql> SELECT * FROM t;


+---------+
| name    |
+---------+
| Wallace |
| William |
+---------+


mysql> BEGIN;

mysql> INSERT INTO t SET name = 'Gromit';

mysql> INSERT INTO t SET name = 'Wallace';

ERROR 1062: Duplicate entry 'Wallace' for key 1

mysql> ROLLBACK;

mysql> SELECT * FROM t;


+---------+
| name    |
+---------+
| Wallace |
| William |
+---------+




mysql> DROP TABLE t;

mysql> CREATE TABLE t (name CHAR(20), UNIQUE (name)) TYPE = INNODB;

mysql> SET AUTOCOMMIT = 0;

mysql> INSERT INTO t SET name = 'William';

mysql> INSERT INTO t SET name = 'Wallace';

mysql> COMMIT;

mysql> SELECT * FROM t;



+---------+
| name    |
+---------+
| Wallace |
| William |
+---------+

Oracle

COMMIT

Para dejar los cambios echos permantentes en una transaccion utiliza COMMIT statement.
La sintaxis de COMMIT Statement es


COMMIT [WORK] [COMMENT ‘your comment’];

WORK es opcional.


COMMENT es opcional, especifica cuando quieres identificar una transaccion en el diccionario de datos. DBA_2PC_PENDING.

ejemplo

insert into emp (empno,ename,sal) values (101,’Abid’,2300);

commit;


ROLLBACK


To rollback the changes done in a transaction give rollback statement. Rollback restore the state of the database to the last commit point.

ejemplo:


delete from emp;

rollback; /* undo the changes */

No hay comentarios:

Publicar un comentario