[go: up one dir, main page]

0% encontró este documento útil (0 votos)
751 vistas24 páginas

DFo 6 5 Esp

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
751 vistas24 páginas

DFo 6 5 Esp

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 24

Database Foundations

6-5
Lenguaje de control de transacciones (TCL)

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados.
Hoja de ruta Lenguaje de Lenguaje de
Introducción a Lenguaje de Lenguaje de manipulación control de
Oracle consulta definición de de datos transacciones
Application estructurado datos (DDL) (DML) (TCL)
Express (APEX) (SQL):

Ordenamiento Unión de
Recuperación Restricción de tablas
de datos datos de datos
mediante mediante
mediante mediante JOIN
SELECT WHERE ORDER BY

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 3
Objetivos
• En esta lección se abordan los siguientes objetivos:
−Describir la finalidad del lenguaje de control de transacciones
(TCL)
−Explicar las operaciones TCL que son necesarias
para gestionar una transacción:
• COMMIT
• SAVEPOINT
• ROLLBACK
−Describir la necesidad de
consistencia de lectura

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 4
Application Express
• COMMIT, ROLLBACK y SAVEPOINT no están soportados
en Oracle Application Express, debido a la forma en
que Oracle Application Express gestiona las conexiones
a la base de datos

Oracle APEX
DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 5
Transacciones de Base de Datos
• Las transacciones constan de sentencias DML que
representan un cambio consistente en los datos
• El servidor de Oracle garantiza la consistencia
de los datos basada en transacciones
• Las transacciones le proporcionan más flexibilidad y
control al cambiar los datos y garantizan la consistencia
de los datos en caso de fallo de proceso de usuario o
del sistema

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 6
Transacciones de Base de Datos
• Por ejemplo, una transferencia de fondos entre dos
cuentas debe incluir el débito en una cuenta y el
crédito en otra con la misma cantidad. Ambas acciones
deben ser correctas o incorrectas por igual; el crédito
no se debe confirmar sin el débito

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 7
Transacciones de base de datos
• Una transacción de base de datos consta de una
de las siguientes sentencias:
−Sentencias DML que representan un cambio consistente en
los datos
−Una sentencia DDL
−Una sentencia TCL

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 8
Transacciones de base de datos: Inicio y fin
• Una transacción empieza cuando se ejecuta la primera
sentencia SQL de DML
• Termina con uno de los siguientes eventos:
−Se emite una sentencia COMMIT o ROLLBACK
−Se ejecuta una sentencia DDL o TCL (confirmación
automática)
−El usuario sale del software SQL en uso
−El sistema falla

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 9
Ventajas de las sentencias COMMIT y ROLLBACK
• Con las sentencias COMMIT y ROLLBACK, puede:
−Garantizar la consistencia
−Visualizar una presentación preliminar de los cambios de los
datos antes de hacerlos permanentes
−Agrupan componentes relacionados de forma lógica
−Tener control sobre cambios permanentes de los datos

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 10
Sentencias de Control de Transacciones
Sentencia Descripción
COMMIT Finaliza la transacción actual convirtiendo todos los cambios de
datos pendientes en permanentes.
SAVEPOINT Marca un punto de grabación en la transacción actual.
nombre
ROLLBACK Finaliza la transacción actual desechando todos los cambios de datos
pendientes.
ROLLBACK Realiza un rollback de la transacción actual en el punto de grabación
TO especificado, desechando de esta forma los cambios y/o puntos de
SAVEPOINT grabación creados después del punto de grabación en el que está
nombre realizando el rollback. Si omite la cláusula TO SAVEPOINT, la
sentencia ROLLBACK realiza un rollback de toda la transacción.
Puesto que los puntos de grabación son lógicos, no hay forma de
mostrar los puntos de grabación que ha creado.

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 11
Sentencias de Control de Transacciones Explícitas
Tiempo COMMIT

Transacción
DELETE FROM copy_employees;

SAVEPOINT A

INSERT INTO departments


VALUES (80, 'Marketing', 400, 1900);

UPDATE employees
SET dept_id = 110;

SAVEPOINT B
INSERT …
ROLLBACK ROLLBACK ROLLBACK
to SAVEPOINT B to SAVEPOINT A

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 12
Cómo Deshacer Cambios de un Marcador
• Cree un marcador en una transacción actual mediante
la sentencia SAVEPOINT
• Descarte cambios pendientes realizando rollback en
dicho marcador mediante la sentencia ROLLBACK TO
SAVEPOINT
UPDATE...
SAVEPOINT update_done;

INSERT...
ROLLBACK TO update_done;

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 13
Procesamiento de Transacciones Implícitas
• Una transacción automática se produce en las
siguientes circunstancias:
−Se emite una sentencia DDL
−Se emite una sentencia TCL
−Hay una salida normal del software SQL, sin emitir
explícitamente las sentencias COMMIT o ROLLBACK
• Se produce un rollback automático cuando hay una
terminación anormal del software SQL o cuando hay
un fallo del sistema para proteger la integridad de la
base de datos

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 14
Estado de los datos antes de COMMIT o ROLLBACK
• Todos los cambios realizados durante una transacción
son temporales si no se confirman, por lo tanto,
se puede recuperar el estado anterior de los datos
• La sesión actual puede revisar los resultados de las
operaciones DML mediante la sentencia SELECT
• Las demás sesiones no pueden ver los resultados de
las sentencias DML emitidas por la sesión actual
• Las filas afectadas están bloqueadas; otras sesiones
no pueden cambiar los datos de las filas afectadas

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 15
Estado de los datos después de COMMIT
• Los cambios de datos se guardan en la base de datos
• Se sobrescribe el estado anterior de los datos
• Todas las sesiones pueden ver los resultados
• Los bloqueos de las filas afectadas se liberan y
dichas filas quedan disponibles para que las manipulen
otras sesiones
• Se borran todos los puntos de grabación

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 16
Confirmación de Datos
• Realice estos cambios:
DELETE
FROM copy_employees
WHERE employee_id=113;

INSERT INTO copy_departments


VALUES (290, 'Corporate Tax', NULL, 1700);

• Confirme los cambios:


COMMIT;

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 17
Estado de los datos después de ROLLBACK
• Deseche todos los cambios pendientes mediante la
sentencia ROLLBACK:
−Se deshacen los cambios de datos
−Se restaura el estado anterior de los datos
−Se liberan los bloqueos de las filas afectadas

DELETE FROM copy_employees;


ROLLBACK ;

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 18
Estado de los datos después de ROLLBACK: Ejemplo
• Imagine que hay una tabla de prueba con 4 registros:
DELETE FROM test;
4 rows deleted
ROLLBACK;
Rollback complete
DELETE FROM test WHERE id = 100;
1 row deleted
SELECT * FROM test WHERE id = 100;
No rows selected
COMMIT;
Commit complete

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 19
Rollback a nivel de sentencia
• Si falla una sentencia DML durante la ejecución,
solo se realiza un rollback de dicha sentencia
• El servidor de Oracle implementa un punto de
grabación implícito
• Los demás cambios se retienen
• El usuario debe terminar las transacciones
explícitamente con la ejecución de una sentencia
COMMIT o ROLLBACK

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 20
Consistencia de Lectura
• La consistencia de lectura garantiza una vista
consistente de los datos en todo momento.
Cada usuario ve los datos como estaban en la última
sentencia COMMIT
• Los cambios realizados por un usuario no entran en
conflicto con los cambios realizados por otro usuario
• La consistencia de lectura garantiza que en los mismos
datos:
−Los lectores no esperen a los escritores
−Los escritores no esperen a los lectores
−Los escritores esperen a los escritores

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 21
Implantación de Consistencia de Lectura
UPDATE employees Bloques
SET salary = 7000 de datos
WHERE last_name = 'Grant';
Segmentos
de deshacer
Usuario A

Datos
SELECT * cambiados
FROM userA.employees; Imagen y sin
de lectura modificar
consistente Antes del
cambio
(datos
Usuario B
“antiguos”)

Nota: para obtener una explicación más detallada sobre la consistencia de lectura,
consulte las notas de la diapositiva

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 22
Resumen
• En esta lección, debe haber aprendido lo siguiente:
−Describir la finalidad del lenguaje de control de transacciones
(TCL)
−Explicar las operaciones TCL que son necesarias
para gestionar una transacción:
• COMMIT
• SAVEPOINT
• ROLLBACK
−Describir la necesidad de
consistencia de lectura

DFo 6-5
Lenguaje de control de transacciones (TCL) Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. 23

También podría gustarte