(PECL ibm_db2 >= 1.0.0)
db2_rollback — Annule une transaction
Annule une transaction en cours sur la ressource de connexion spécifiée et commence une nouvelle transaction. Les applications PHP utilisent normalement le mode AUTOCOMMIT par défaut, donc db2_rollback() n'a normalement aucun effet tant que AUTOCOMMIT n'a pas été désactivé pour la ressource de connexion.
connectionExemple #1 Annulation d'une instruction DELETE
Dans l'exemple suivant, le nombre de lignes dans une table est compté,
le mode AUTOCOMMIT est désactivé sur une connexion de base de données,
toutes les lignes de la table sont supprimées et le compteur retourne
0 pour prouver que les lignes ont bien été supprimées.
Ensuite, db2_rollback() est invoquée, et le nombre
de lignes mis à jour dans la table est retourné pour montrer que le nombre
est le même qu'avant l'exécution de l'instruction DELETE. Le retour à
l'état original de la table démontre que l'annulation de la transaction
a réussi.
<?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";
// Désactive AUTOCOMMIT
db2_autocommit($conn, DB2_AUTOCOMMIT_OFF);
// Supprime toutes les lignes de ANIMALS
db2_exec($conn, "DELETE FROM animals");
$stmt = db2_exec($conn, "SELECT count(*) FROM animals");
$res = db2_fetch_array( $stmt );
echo $res[0] . "\n";
// Annule l'instruction DELETE
db2_rollback( $conn );
$stmt = db2_exec( $conn, "SELECT count(*) FROM animals" );
$res = db2_fetch_array( $stmt );
echo $res[0] . "\n";
db2_close($conn);
}
?>L'exemple ci-dessus va afficher :
7 0 7