¿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.
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