viernes, 12 de abril de 2013

Modos de operación de un sgbd


ROLLBACK
Señala el final sin éxito de una transacción, elimina todas las modificaciones de datos realizadas desde el inicio de la transacción y también libera los recursos que retiene la transacción. Su sintaxis es la siguiente:
ROLLBACK [WORK] [TO SAVEPOINT nombrePuntoRestauración | FORCE 'texto'];
COMMIT
Una sentencia COMMIT marca el final de una transacción correcta, implícita o definida por el usuario. COMMIT hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transacción sean parte permanente de la base de datos, y además, libera los recursos mantenidos por la conexión. Su sintaxis es la siguiente:

COMMIT COMMENT 'mensaje' | FORCE 'texto']


RECOVERY (RESTORE)
Restaura la tabla o tablas de una copia de seguridad que se hizo con BACKUP TABLE. Las tablas existentes no se sobreescriben; si trata restaurar una tabla existente, obtiene un error. Pero como BACKUP TABLE, RESTORE TABLE actualmente funciona sólo para tablas MyISAM. El directorio debe especificarse como una ruta completa.
 
ROLLBACK
En MYSQL
mysql> CREATE TABLE innotest (campo INT NOT NULL PRIMARY KEY) TYPE = InnoDB;
Query OK, 0 rows affected (0.10 sec)
 
mysql> INSERT INTO innotest VALUES(1);
Query OK, 1 row affected (0.08 sec)
 
mysql> INSERT INTO innotest VALUES(2);
Query OK, 1 row affected (0.01 sec)
 
mysql> INSERT INTO innotest VALUES(3);
Query OK, 1 row affected (0.04 sec)
 
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
|     1 |
|     2 |
|     3 |
+-------+
3 rows in set (0.00 sec)
De acuerdo, nada espectacular. Ahora veamos como usar transacciones.
mysql> BEGIN;
Query OK, 0 rows affected (0.01 sec)
 
mysql> INSERT INTO innotest VALUES(4);
Query OK, 1 row affected (0.00 sec)
 
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
|     1 |
|     2 |
|     3 |
|     4 |
+-------+
4 rows in set (0.00 sec)
Si en este momento ejecutamos un ROLLBACK, la transacción no será completada, y los cambios realizados sobre la tabla no tendrán efecto.
mysql> ROLLBACK;
Query OK, 0 rows affected (0.06 sec)
 
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
|     1 |
|     2 |
|     3 |
+-------+


En Oracle
Para deshacer los cambios realizados en una transacción. Rollback restaura el estado de la base de datos para el último punto de confirmación.

Ejemplo:
delete from emp;
rollback;          /* undo the changes */

COMMIT
En mysql
START TRANSACTION;
SELECT @A := presupuesto
FROM departamentos_externos
WHERE codigo =11;
INSERT INTO departamentos( codigo, nombre, presupuesto )
VALUES ( 11, ‘Department test’, @A );
COMMIT;

En Oracle
Para que los cambios realizados en un número de transacción permanente la sentencia COMMIT.

La sintaxis de la sentencia COMMIT es:
COMMIT  [WORK]  [COMMENT ‘your comment’];

RECOVERY (RESTORE)
En mysql
RESTORE TABLE tbl_name [, tbl_name] ... FROM '/path/to/backup/directory'

En Oracle
RECOVER [AUTOMATIC] [FROM 'localizacion'] [BD]
   [UNTIL CANCEL]
   [UNTIL TIME fecha]
   [UNTIL CHANGE entero]
[USING BACKUP CONTROLFILE]

BIBLIOGRAFIA

No hay comentarios:

Publicar un comentario