logo

TRANSACCIONES SQL

Una transacción SQL es una secuencia de una o más operaciones SQL (p. ej.INSERT UPDATE DELETE) ejecutado como una sola unidad de trabajo. Las transacciones garantizan que todas las operaciones se realicen correctamente o que no se aplique ninguna manteniendo la integridad de los datos.

Propiedades clave de las transacciones SQL: ACID

La integridad de las transacciones SQL se rige por las propiedades ACID que garantizan transacciones confiables de la base de datos. Estas cuatro propiedades trabajan juntas para garantizar que la base de datos siga siendo consistente y confiable.

  • Atomicidad: El resultado de una transacción puede ser completamente exitoso o completamente fallido. Toda la transacción debe revertirse si una parte falla.
  • Consistencia: Las transacciones mantienen restricciones de integridad al mover la base de datos de un estado válido a otro.
  • Aislamiento: Las transacciones simultáneas están aisladas unas de otras para garantizar la precisión de los datos.
  • Durabilidad: Una vez que se confirma una transacción, sus modificaciones permanecen vigentes incluso en caso de una falla del sistema.

Comandos de control de transacciones SQL

En los comandos de control de transacciones SQL gestionan el ejecución de operaciones SQL asegurando la integridad y confiabilidad de las transacciones de la base de datos. Estos comandos ayudan a gestionar la confirmación inicial y la reversión de los cambios realizados en la base de datos. A continuación se muestran los comandos clave de control de transacciones en SQL explicados con sintaxis y ejemplos para cada uno.



1. Comando COMENZAR TRANSACCIÓN

ElBEGIN TRANSACTIONEl comando marca el comienzo de una nueva transacción. Todas las declaraciones SQL que siguen a este comando serán parte de la misma transacción hasta que seCOMMIT o ROLLBACK se encuentra. Este comando no realiza ningún cambio en la base de datos, simplemente inicia la transacción.

cadena java a entero

Sintaxis:

BEGIN TRANSACTION transaction_name ;

Ejemplo de transacción SQL con un escenario de transferencia bancaria

Veamos un ejemplo de transferencia bancaria entre dos cuentas. Este ejemplo demuestra el uso de múltiples consultas en una sola transacción.

BEGIN TRANSACTION;  

-- Deduct 0 from Account A
UPDATE Accounts
SET Balance = Balance - 150
WHERE AccountID = 'A';

-- Add 0 to Account B
UPDATE Accounts
SET Balance = Balance + 150
WHERE AccountID = 'B';

-- Commit the transaction if both operations succeed
COMMIT;

Si se produce algún error, como un problema con elUPDATEconsulta que puedes usarROLLBACKpara deshacer todos los cambios realizados durante la transacción:

ROLLBACK;

Esto garantiza que el sistema no termine en un estado inconsistente, como deducir dinero de una cuenta sin agregarlo a otra.

BEGIN TRANSACTION TransferFunds;

2. Comando COMPROMISO

ElCOMMITEl comando se utiliza para guardar todos los cambios realizados durante la transacción actual en la base de datos. Una vez que se confirma una transacción, los cambios son permanentes. 

Sintaxis:

COMMIT;

Ejemplo

Aquí está la muestraStudenttabla que se utilizará para realizar las operaciones de este ejemplo. Esta tabla contiene detalles básicos del estudiante, como el nombre de identificación, la edad y otra información relevante que se manipulará utilizando varios Comandos de control de transacciones.

producción' title=Mesa de estudiantes

A continuación se muestra un ejemplo que eliminaría aquellos registros de la tabla que tienen edad = 20 y luego COMMITIRía los cambios en la base de datos. 

DELETE FROM Student WHERE AGE = 20;  
COMMIT;

Producción

producción' loading='lazy' title=producción

3. Comando ROLLBACK

ElROLLBACKEl comando se utiliza para deshacer todos los cambios realizados en la transacción actual. Se utiliza cuando ocurre un error o cuando no se pueden completar los cambios deseados. La base de datos volverá al estado en el que se encontraba antes de la BEGIN TRANSACTION fue ejecutado.

Sintaxis:

ROLLBACK;

Ejemplo

Elimine aquellos registros de la tabla que tengan edad = 20 y luego REVERSE los cambios en la base de datos. En este caso el DELETE La operación se deshace y los cambios en la base de datos no se guardan.

DELETE FROM Student WHERE AGE = 20;  
ROLLBACK;

Producción:

producción' loading='lazy' title=producción

4. Comando PUNTO DE GUARDAR

ASAVEPOINTse utiliza para crear un control dentro de una transacción. Podemos retroceder a un punto específico.SAVEPOINTen lugar de revertir toda la transacción. Esto nos permite deshacer parte de la transacción en lugar de toda la transacción.

Sintaxis:

SAVEPOINT SAVEPOINT_NAME;

Ejemplo

SAVEPOINT SP1;  
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.

Producción:

producción' loading='lazy' title=producción

Explicación:

Del ejemplo anterior Tabla de muestra 1 Elimine aquellos registros de la tabla que tengan edad = 20 y luego REVERSE los cambios en la base de datos manteniendo los puntos de guardado. Aquí SP1 es el primer SAVEPOINT creado antes de eliminarlo. En este ejemplo se ha producido una eliminación. Después de la eliminación, se crea nuevamente SAVEPOINT SP2. 

5. VOLVER AL PUNTO DE GUARDADO

ElROLLBACK TO SAVEPOINTEl comando nos permite revertir la transacción a un punto de guardado específico, deshaciendo efectivamente los cambios realizados después de ese punto.

Sintaxis:

ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;

Ejemplo

Se ha realizado la eliminación. Supongamos que cambiamos de opinión y decidimos VOLVER al PUNTO DE GUARDADO que identificamos como SP1 que está antes de la eliminación. Entonces en este caso elDELETELa operación se deshace y la transacción se devuelve al estado en el que se encontraba en el momento.SP1punto de guardado.

ROLLBACK TO SP1;  
//Rollback completed

Producción:

producción' loading='lazy' title=producción

6. Comando LIBERAR PUNTO DE GUARDADO

Este comando sirve para eliminar un SAVEPOINT que hayamos creado. Una vez que se ha liberado un SAVEPOINT ya no podemos usar ROLLBACK comando 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 siguiente. 

Sintaxis:  

RELEASE SAVEPOINT SAVEPOINT_NAME;

Ejemplo

Una vez que el punto de guardadoSP2se publica, ya no podemos volver a él.

RELEASE SAVEPOINT SP2; -- Release the second savepoint.

¿Por qué utilizar transacciones en la banca?

En este caso, sin una transacción, corre el riesgo de que se deduzca dinero de una cuenta pero no se agregue a la otra, dejando el sistema en un estado inconsistente. Las transacciones garantizan que se eviten estos problemas al garantizar que ambas operaciones tengan éxito o fracasen juntas.

Tipos de transacciones SQL

Existen diferentes tipos de transacciones según su naturaleza y las operaciones específicas que realizan:

  • Leer transacciones : Se utiliza para leer solo los datos normalmente con SELECT consultas.
  • Escribir transacciones : Implican modificar los datos de la base de datos con INSERT UPDATEoDELETEoperaciones.
  • Transacciones distribuidas : Estas transacciones abarcan múltiples bases de datos y garantizan la coherencia entre ellas.
  • Transacciones implícitas : Iniciado automáticamente por SQL Server para determinadas operaciones.
  • Transacciones explícitas : Transacciones controladas manualmente donde el usuario comienza y finaliza la transacción usandoBEGIN TRANSACTION COMMITyROLLBACK.

Monitoreo y optimización de transacciones SQL

Para mantener el rendimiento y evitar problemas, considere las siguientes técnicas:

1. Monitorear bloqueos : Realice un seguimiento del comportamiento de bloqueo y ajuste las consultas para minimizar los conflictos de bloqueo.

2. Limitar el alcance de la transacción : limite el número de filas o registros afectados por una transacción para acelerar el procesamiento.

3. Utilice el procesamiento por lotes : si maneja grandes cantidades de datos, divida las operaciones en transacciones o lotes más pequeños para evitar sobrecargar el sistema.

Prueba sugerida Editar cuestionario 5 preguntas

¿Cuál de los siguientes escenarios describe mejor una violación de la propiedad 'Aislamiento' en ACID?

  • A

    Una transacción deja la base de datos en un estado que viola una restricción de clave primaria.

  • B

    Dos transacciones que se ejecutan simultáneamente leen y escriben en los mismos datos, lo que genera resultados inconsistentes.

  • do

    Un usuario actualiza exitosamente un registro pero una falla del sistema borra el cambio.

  • D

    Una transacción falla a mitad de camino y todos sus cambios se revierten.

Explicación:

Este es un ejemplo clásico de violación de aislamiento en la que el estado intermedio de una transacción es visible para otra.

En una aplicación bancaria, una transferencia de fondos implica debitar una cuenta y acreditar en otra. ¿Qué propiedad ACID garantiza que ambas operaciones se completen o ninguna de ellas?

  • A

    Aislamiento

  • B

    Atomicidad

  • do

    Durabilidad

  • D

    Consistencia

Explicación:

La atomicidad garantiza que todas las operaciones dentro de una transacción se completen con éxito; de lo contrario, se revierte toda la transacción.

Se ejecuta una transacción y se emite un 'COMMIT'. Inmediatamente después de que se produzca un corte de energía. ¿Qué propiedad ACID garantiza que los cambios realizados por la transacción sigan presentes después de que se reinicie el sistema?

  • A

    Consistencia

  • B

    Atomicidad

  • do

    Durabilidad

    10 de 100
  • D

    Aislamiento

Explicación:

La durabilidad es la propiedad que garantiza que una vez que se ha realizado una transacción, permanecerá así incluso en caso de una pérdida de energía o una falla del sistema.

¿Cuál es el propósito principal del comando 'SAVEPOINT' en una transacción?

  • A

    Para comprometer una parte de la transacción.

  • B

    Para marcar un punto en una transacción al que luego puede retroceder.

  • do

    Para guardar permanentemente el estado de la transacción.

  • D

    Para finalizar la transacción y hacer que todos los cambios sean permanentes.

Explicación:

'SAVEPOINT' permite reversiones parciales dentro de una transacción.

Considere la siguiente transacción: 'INICIAR TRANSACCIÓN; INSERTAR ...; PUNTO DE SALVADO A; ACTUALIZAR ...; PUNTO DE SALVADO B; BORRAR ...; VOLVER AL PUNTO DE GUARDADO A;' ¿Cuál es el estado de la transacción después del comando 'ROLLBACK'?

  • A

    Se revierte toda la transacción.

  • B

    Sólo se deshace 'BORRAR'.

  • do

    Se produce un error porque no se puede retroceder a un punto de guardado que no sea el más reciente.

  • D

    El 'INSERT' se guarda pero el 'UPDATE' y el 'DELETE' se deshacen.

Explicación:

Regresar a 'PUNTO DE GUARDADO A' deshace todos los cambios realizados después de ese punto de guardado, que son 'ACTUALIZAR' y 'ELIMINAR'.

TRANSACCIONES SQLPrueba completada con éxito Su puntuación:  2/5Exactitud : 0%Inicie sesión para ver la explicación 1/5 1/5 < Previous Siguiente >