MariaDB - Transacciones
Las transacciones son operaciones de grupo secuenciales. Funcionan como una sola unidad y no terminan hasta que todas las operaciones dentro del grupo se ejecutan con éxito. Un solo error en el grupo hace que toda la transacción falle y no tenga ningún impacto en la base de datos.
Las transacciones se ajustan a ACID (atomicidad, consistencia, aislamiento y durabilidad) -
Atomicity - Asegura el éxito de todas las operaciones al abortar las fallas y revertir los cambios.
Consistency - Asegura que la base de datos aplique cambios en una transacción exitosa.
Isolation - Permite la operación de transacciones independientes de transacciones.
Durability - Asegura la persistencia de una transacción exitosa en caso de falla del sistema.
Al principio de una declaración de transacción se encuentra la declaración START TRANSACTION seguida de las declaraciones COMMIT y ROLLBACK:
INICIAR TRANSACCIÓN comienza la transacción.
COMMIT guarda los cambios en los datos.
ROLLBACK finaliza la transacción, destruyendo cualquier cambio.
En una transacción exitosa, COMMIT actúa. En caso de falla, ROLLBACK actúa.
Note- Algunas declaraciones provocan una confirmación implícita y también provocan un error cuando se utilizan dentro de las transacciones. Ejemplos de tales declaraciones incluyen, pero no se limitan a CREATE, ALTER y DROP.
Las transacciones MariaDB también incluyen opciones como SAVEPOINT y LOCK TABLES. SAVEPOINT establece un punto de restauración para utilizar con ROLLBACK. LOCK TABLES permite controlar el acceso a las tablas durante las sesiones para evitar modificaciones durante ciertos períodos de tiempo.
La variable AUTOCOMMIT proporciona control sobre las transacciones. Un valor de 1 obliga a que todas las operaciones se consideren transacciones exitosas, y un valor de 0 hace que la persistencia de cambios solo ocurra en una declaración COMMIT explícita.
Estructura de una transacción
La estructura general de una declaración de transacción consiste en comenzar con INICIAR TRANSACCIÓN. El siguiente paso es insertar uno o más comandos / operaciones, insertar declaraciones que comprueben errores, insertar declaraciones ROLLBACK para administrar cualquier error descubierto y finalmente insertar una declaración COMMIT para aplicar cambios en operaciones exitosas.
Revise el ejemplo que se da a continuación:
START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;