Daniel Segovia

Blog personal

Archive for the ‘5.4.6 Transacciones’ Category

Transacciones en Sqlite

Hacer un comentario

Una transacción es una secuencia de operaciones realizadas como una sola unidad lógica, ésta debe exponer 4 propiedades.

  1. Atomicidad: Asegura que la operación se ha realizado o no.
  2. Consistencia: Asegura que sólo empieza todo lo que se puede acabar.
  3. Aislamiento: Asegura que una operación no puede afectar a otras. Es decir, la realización de dos o más transacciones sobre la misma información sean independientes y no esto no producirá ningún tipo de error.
  4. Durabilidad: Asegura que una vez realizada la operación, ésta quedará persistente y no podrá deshacerse aunque el sistema.

Sí el motor de base de datos posee estás 4 propiedades éste puede ser considerado ACID Compliant (Atomicity, Consistency, Isolation and Durability)

Veamos el ejemplo de recuperar los datos con una transacción

<?php
$db = new SQLiteDatabase("db.sqlite");
 
// Traigo todos los registros de la tabla personas
$result = $db->query("BEGIN; SELECT * FROM personas; COMMIT;");
 
// ciclo el resultado
while($result->valid()) {
    $row = $result->current();
    echo $row['id'].' - '.$row['nombre'].' - '.$row['apellido'].'<br />';
    $result->next();
}
?>

Como puede observarse en el query poseemos BEGIN; y COMMIT; en medio de nuestra consulta que recupera los datos (los puntos y comas separan cada consulta). Esto se debe a que iniciamos una transacción en la base de datos, BEGIN da comienzo a ésta, luego se realiza el o los querys y por último COMMIT hace efectivos estos querys. Las transacciones nos dan la posibilidad de volver atrás en cualquier momento y deshacer todo lo hecho previamente con ROLLBACK.
Por ejemplo sí tenemos que crear 10 tablas podemos iniciar una transacción, sí por algún motivo los 6 primeros querys tienen la sintaxis correcta y no hacen ningún tipo de colisión y nuestra séptima instrucción da algún error con ROLLBACK podemos deshacer todos los querys después del comienzo de la transacción.

Es un tema muy amplio el de las transacciones y las bases de datos en general, así que como dije al principio del capítulo estaremos más abocados a aprender PHP

Written by Daniel Segovia

octubre 26th, 2011 at 1:32 pm