oci_close
oci_connect
Fonctions OCI8
PHP Manual

# oci_commit

(PHP 5, PECL OCI8 >= 1.1.0)

oci_commit — Valide les transactions Oracle en cours

### Description

bool oci_commit ( resource `$connection` )

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().

### Valeurs de retour

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

### 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.

> Note:

> Dans les version PHP avant 5.0.0, vous devez utiliser la fonction ocicommit() à la place. Le nom de l'ancienne fonction peut toujours être utilisé dans les versions courantes, malgré le fait qu'il est maintenant obsolète et que nous ne vous le recommandons pas.

### Voir aussi

- oci_execute() - Exécute une commande SQL Oracle
- oci_rollback() - Annule les transactions Oracle en cours

oci_close
oci_connect
Fonctions OCI8
PHP Manual