¿Qué son las Transacciones?
Las transacciones agrupan un conjunto de tareas en una única unidad de ejecución. Cada transacción comienza con una tarea específica y finaliza cuando todas las tareas del grupo se completan con éxito. Si alguna de las tareas falla, la transacción falla. Por lo tanto, una transacción tiene solo dos resultados: éxito o fracaso .
Los pasos incompletos resultan en el fracaso de la transacción. Una transacción de base de datos, por definición, debe ser atómica, consistente, aislada y duradera. Éstas se conocen popularmente como propiedades
ACID .
¿Cómo implementar Transacciones usando SQL?
Los siguientes comandos se utilizan para controlar las transacciones. Es importante tener en cuenta que estas declaraciones no se pueden usar al crear tablas y solo se usan con los comandos DML como INSERTAR, ACTUALIZAR y ELIMINAR.
1. INICIO DE TRANSACCIÓN: Indica el punto de inicio de una transacción explícita o local.
Sintaxis:
BEGIN TRANSACTION transaction_name ;
2. FIJAR TRANSACCIÓN: Coloca un nombre en una transacción.
Sintaxis:
SET TRANSACTION [ READ WRITE | READ ONLY ];
3. COMMIT: Si todo está en orden con todas las declaraciones dentro de una sola transacción, todos los cambios se registran juntos en la base de datos que se llama commit . El comando COMMIT guarda todas las transacciones en la base de datos desde el último comando COMMIT o ROLLBACK.
Sintaxis:
COMMIT;
Ejemplo: Tabla de muestra 1
El siguiente es un ejemplo que eliminaría los registros de la tabla que tienen edad = 20 y luego COMMIT los cambios en la base de datos.
Consultas:
DELETE FROM Student WHERE AGE = 20; COMMIT;
Salida:
por lo tanto, se eliminarían dos filas de la tabla y la declaración SELECT se vería así,
4. ROLLBACK: si ocurre algún error con cualquiera de las declaraciones agrupadas de SQL, todos los cambios deben cancelarse. El proceso de revertir los cambios se denomina reversión . Este comando solo se puede usar para deshacer transacciones desde que se emitió el último comando COMMIT o ROLLBACK.
Sintaxis:
ROLLBACK;
Ejemplo:
del ejemplo anterior Sample table1 , elimine
los registros de la tabla que tienen una edad = 20 y luego RETROCEDA los cambios en la base de datos.
Consultas:
DELETE FROM Student WHERE AGE = 20; ROLLBACK;
Producción:
5. SAVEPOINT: crea puntos dentro de los grupos de transacciones en los que ROLLBACK.
Un SAVEPOINT es un punto en una transacción en el que puede revertir la transacción hasta cierto punto sin revertir toda la transacción.
Sintaxis para el comando Savepoint:
SAVEPOINT SAVEPOINT_NAME;
Este comando se usa solo en la creación de SAVEPOINT entre todas las transacciones.
En general, ROLLBACK se usa para deshacer un grupo de transacciones.
Sintaxis para retroceder al comando Savepoint:
ROLLBACK TO SAVEPOINT_NAME;
puede ROLLBACK a cualquier SAVEPOINT en cualquier momento para devolver los datos apropiados a su estado original.
Ejemplo:
del ejemplo anterior Sample table1 , elimine
los registros de la tabla que tienen una edad = 20 y luego RETROCEDA los cambios en la base de datos manteniendo los puntos de guardado.
Consultas:
SAVEPOINT SP1; //Savepoint created. DELETE FROM Student WHERE AGE = 20; //deleted SAVEPOINT SP2; //Savepoint created.
Aquí SP1 es el primer SAVEPOINT creado antes de la eliminación. En este ejemplo, se ha producido una eliminación.
Después de la eliminación, se crea nuevamente SAVEPOINT SP2.
Producción:
Se ha llevado a cabo la eliminación, supongamos que ha cambiado de opinión y decidió VOLVER al SAVEPOINT que identificó como SP1 que está antes de la eliminación.
la eliminación se deshace con esta declaración,
ROLLBACK TO SP1; //Rollback completed.
6. RELEASE SAVEPOINT: este comando se usa para eliminar un SAVEPOINT que haya creado.
Sintaxis:
RELEASE SAVEPOINT SAVEPOINT_NAME
Una vez que se ha liberado un SAVEPOINT, ya no puede usar el comando ROLLBACK para deshacer las transacciones realizadas desde el último SAVEPOINT.
Se utiliza para iniciar una transacción de base de datos y para especificar las características de la transacción que sigue.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA