SQLite Transacción
Una transacción es una unidad de trabajo que se ejecuta en la base de datos. Una transacción es una unidad o secuencia de trabajo completada en un orden lógico, que puede ser realizada manualmente por el usuario o automáticamente por algún programa de base de datos.
Una transacción se refiere a una extensión de uno o más cambios en la base de datos. Por ejemplo, si está creando un registro, actualizando un registro o eliminando un registro de una tabla, entonces está ejecutando una transacción en esa tabla. Es importante controlar las transacciones para garantizar la integridad de los datos y manejar los errores de la base de datos.
De hecho, puede agrupar muchas consultas SQLite y ejecutarlas todas juntas como parte de una transacción.
Propiedades de las transacciones
Una transacción tiene las siguientes cuatro propiedades estándar, generalmente abreviadas como ACID:
Atomicidad:Asegura que todas las operaciones dentro de la unidad de trabajo se completen con éxito; de lo contrario, la transacción termina en caso de fallo y las operaciones anteriores se revierten a su estado previo.
Consistencia:Asegura que la base de datos cambie de estado correctamente en una transacción confirmada con éxito.
Aislamiento:Hace que las operaciones de transacción sean independientes y transparentes entre sí.
Persistencia:Asegura que los resultados o efectos de una transacción confirmada persistan incluso en caso de fallo del sistema.
Control de transacciones
Use los siguientes comandos para controlar las transacciones:
BEGIN TRANSACTION: Iniciar el procesamiento de la transacción.
COMMIT: Guardar los cambios, o se puede usarEND TRANSACTIONel comando.
ROLLBACK: Revertir los cambios realizados.
Los comandos de control de transacciones solo se usan con los comandos DML INSERT, UPDATE y DELETE. No se pueden usar al crear o eliminar tablas, ya que estas operaciones se confirman automáticamente en la base de datos.
Comando BEGIN TRANSACTION
Una transacción se puede iniciar con el comando BEGIN TRANSACTION o simplemente con el comando BEGIN. Normalmente, dicha transacción continúa ejecutándose hasta que se encuentra el siguiente comando COMMIT o ROLLBACK. Sin embargo, la transacción también se revierte cuando se cierra la base de datos o se produce un error. La siguiente es la sintaxis simple para iniciar una transacción:
BEGIN; or BEGIN TRANSACTION;
Comando COMMIT
El comando COMMIT es un comando de transacción que se utiliza para guardar los cambios realizados por la transacción en la base de datos.
El comando COMMIT guarda en la base de datos todas las transacciones desde el último comando COMMIT o ROLLBACK.
La sintaxis del comando COMMIT es la siguiente:
COMMIT; or END TRANSACTION;
Comando ROLLBACK
El comando ROLLBACK es un comando de transacción que se utiliza para deshacer transacciones que aún no se han guardado en la base de datos.
El comando ROLLBACK solo se puede usar para deshacer transacciones desde el último comando COMMIT o ROLLBACK emitido.
La sintaxis del comando ROLLBACK es la siguiente:
ROLLBACK;
Ejemplo
Supongamos que la tabla COMPANY tiene los siguientes registros:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Ahora, comencemos una transacción y eliminemos los registros con age = 25 de la tabla. Finalmente, usamos el comando ROLLBACK para deshacer todos los cambios.
sqlite> BEGIN; sqlite> DELETE FROM COMPANY WHERE AGE = 25; sqlite> ROLLBACK;
Verificamos la tabla COMPANY y todavía tiene los siguientes registros:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Ahora, comencemos otra transacción, eliminemos los registros con age = 25 de la tabla y, finalmente, usemos el comando COMMIT para confirmar todos los cambios.
sqlite> BEGIN; sqlite> DELETE FROM COMPANY WHERE AGE = 25; sqlite> COMMIT;
Verificamos la tabla COMPANY y tiene los siguientes registros:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 3 Teddy 23 Norway 20000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0Otras extensiones