oci_commit
(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_commit — Valide les transactions Oracle en cours
Description
$connection
) : bool
Valide toutes les transactions en cours sur la connexion Oracle
connection
. Une validation rend permanentes
toutes les modifications, en libérant tous les verrous.
Une transaction commence lorsque la première requête SQL
qui modifie des données est exécutée avec la fonction
oci_execute() en utilisant le drapeau
OCI_NO_AUTO_COMMIT
. Les modifications suivantes
faîtes par d'autres requêtes deviennent parties intégrantes de la
même transaction. Les données modifiées par une transaction sont
temporaires tant que la transaction n'est pas validée ou annulée.
Les autres utilisateurs de la base de données ne verront ces modifications
qu'une fois la transaction validée.
Lors de l'insertion ou de la mise à jour de données, l'utilisation des transactions est recommandée afin de garantir la consistance relationnelle des données, mais aussi afin d'augmenter les performances.
Liste de paramètres
-
connection
-
Un identifiant de connexion Oracle, retourné par la fonction oci_connect(), oci_pconnect(), ou oci_new_connect().
Exemples
Exemple #1 Exemple avec oci_commit()
<?php
// Insertion dans plusieurs tables, avec une 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 les insertions automatiquement.
/// Utilisez le drapeau OCI_DEFAULT pour PHP <= 5.3.1. Les 2 sont équivalents
$r = oci_execute($stid, OCI_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($stid, OCI_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);
}
// Valide les modifications sur les 2 tables
$r = oci_commit($conn);
if (!$r) {
$e = oci_error($conn);
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
?>
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 transaction.
Chaque appel à la fonction oci_execute() qui utilise le mode
OCI_COMMIT_ON_SUCCESS
explicitement ou par défaut, validera toutes les transactions précédentes non validées à ce stade.Toutes les requêtes Oracle comme CREATE ou DROP validera également toutes les transactions non validées.
Voir aussi
- oci_execute() - Exécute une commande SQL Oracle
- oci_rollback() - Annule les transactions Oracle en cours
Version en cache
15/11/2024 16:48:13 Cette version de la page est en cache (à la date du 15/11/2024 16:48:13) 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-oci-commit.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
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.