(PECL ibm_db2 >= 1.0.0)
db2_rollback — Cancelar una transacción
Cancela una transacción en progreso en el recurso de conexión especificado y comienza una nueva transacción. Comunmente las aplicaciones de PHP confirman las transacciones de manera automática por lo que la función db2_rollback() no tendría efecto a menos que este modo haya sido desactivado para este recurso.
Devuelve true
en caso de éxito o false
en caso de error.
Ejemplo #1 Cancelando una sentencia DELETE
En el siguiente ejemplo se cuenta el número de filas en una tabla, se cancelan
las confirmaciones automáticas en la conexión, se eliminan todas las filas de la tabla
y devuelve el total de 0
para confirmar que las filas se han borrado.
Cuando se llama a db2_rollback()
y se devuelve el total actualizado de filas en la tabla para demostrar que el número es
igual al original (antes de ejecutar la sentancia DELETE). Esto demuestra
que la cancelación de la transacción fue correcto.
<?php
$conn = db2_connect($database, $user, $password);
if ($conn) {
$stmt = db2_exec($conn, "SELECT count(*) FROM animals");
$res = db2_fetch_array( $stmt );
echo $res[0] . "\n";
// Turn AUTOCOMMIT off
db2_autocommit($conn, DB2_AUTOCOMMIT_OFF);
// Delete all rows from ANIMALS
db2_exec($conn, "DELETE FROM animals");
$stmt = db2_exec($conn, "SELECT count(*) FROM animals");
$res = db2_fetch_array( $stmt );
echo $res[0] . "\n";
// Roll back the DELETE statement
db2_rollback( $conn );
$stmt = db2_exec( $conn, "SELECT count(*) FROM animals" );
$res = db2_fetch_array( $stmt );
echo $res[0] . "\n";
db2_close($conn);
}
?>
El resultado del ejemplo sería:
7 0 7