Rechercher une fonction PHP

oci_rollback

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_rollbackAnnule les transactions Oracle en cours

Description

bool oci_rollback ( resource $connection )

Annule toutes les modifications non validées pour une connexion connection Oracle et met fin à la transaction courante. Tous les verrous seront également libérés. Tous les points de sauvegarde Oracle (SAVEPOINTS) seront supprimés.

Une transaction commence lorsque la première requête SQL qui modifie des données est exécuté avec la fonction oci_execute() en utilisant le drapeau OCI_NO_AUTO_COMMIT. Les modifications suivantes effectuées par d'autres requêtes deviennent partie intégrante de la même transaction. Les modifications effectuées lors d'une transaction sont temporaires tant que la transaction n'a pas été validée ou annulée. Les autres utilisateurs de la base de données ne verront ces modifications que lors de la validation de la transaction.

Lors de l'insertion ou de la mise à jour de données, l'utilisation des transactions est fortement recommandée afin de garantir la consistence relationnelle des données, mais aussi pour des raisons de performance.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

connection

Un identifiant de connexion Oracle, retourné par la fonction oci_connect(), oci_pconnect() ou oci_new_connect().

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

Exemple #1 Exemple avec oci_rollback()

<?php

// Insertion dans plusieurs tables, puis, annulation des modifications si des erreurs surviennent

$conn oci_connect('hr''welcome''localhost/XE');

$stid oci_parse($conn"INSERT INTO mysalary (id, name) VALUES (1, 'Chris')");

// Le drapeau OCI_NO_AUTO_COMMIT indique à Oracle de ne pas valider l'insertion immédiatement.
// Utilisez le drapeau OCI_DEFAULT en PHP <= 5.3.1. Les 2 sont identiques.
$r oci_execute($stidOCI_NO_AUTO_COMMIT);
if (!
$r) {    
    
$e oci_error($stid);
    
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

$stid oci_parse($conn'INSERT INTO myschedule (startday) VALUES (12)');
$r oci_execute($stidOCI_NO_AUTO_COMMIT);
if (!
$r) {    
    
$e oci_error($stid);
    
oci_rollback($conn);  // Annulation des modifications sur les 2 tables
    
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

// Validation des modifications sur les 2 tables
$r oci_commit($conn);
if (!
r) {
    
$e oci_error($conn);
    
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

?>

Exemple #2 Exemple de retour à un point de sauvegarde (SAVEPOINT)

<?php
$stid 
oci_parse($conn'UPDATE mytab SET id = 1111');
oci_execute($stidOCI_NO_AUTO_COMMIT);

// création du point de sauvegarde
$stid oci_parse($conn'SAVEPOINT mysavepoint');
oci_execute($stidOCI_NO_AUTO_COMMIT);

$stid oci_parse($conn'UPDATE mytab SET id = 2222');
oci_execute($stidOCI_NO_AUTO_COMMIT);

// utilise une requête SQL explicite pour effectuer le retour au point de sauvegarde
$stid oci_parse($conn'ROLLBACK TO SAVEPOINT mysavepoint');
oci_execute($stidOCI_NO_AUTO_COMMIT);

oci_commit($conn);  // mytab a maintenant un id de 1111
?>

Retour à la première page de Manuel PHP  Table des matières Haut

Notes

Note:

Les transactions sont automatiquement annulées lorsque vous fermez la connexion, ou lorsque le script se termine, un des deux arrivant le premier. Vous devez explicitement appeler la fonction oci_commit() pour valider la connexion.

Tous les appels à la fonction oci_execute() qui utilisent le mode OCI_COMMIT_ON_SUCCESS, qui se soit par défaut ou de façon explicite, valideront toutes les transactions en attente.

Toutes les requêtes Oracle comme CREATE ou DROP valideront également, automatiquement, toutes les transactions en attente.

Retour à la première page de Manuel PHP  Table des matières Haut

Voir aussi

Rechercher une fonction PHP

Version en cache

23/12/2024 04:18:56 Cette version de la page est en cache (à la date du 23/12/2024 04:18:56) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-function.oci-rollback.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut