oci_commit

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

oci_commitConsigna la transacción pendiente de la base de datos

Descripción

oci_commit ( resource $connection ) : bool

Consigna la transacción pendiente de la conexión de Oracle dada por connection. Una consignación finaliza la transacción actual y hace permanente todos los cambios. Libera todos los bloqueos que hubiera.

Una transacción comienza cuando la primera sentencia SQL que modifica datos es ejecutada con oci_execute() usando la bandera OCI_NO_AUTO_COMMIT. Las modificaciones posteriores de datos realizados por otra sentencia serán parte de la misma transacción. Las modificaciones hechas en una transacción son temporales hasta que sea consignada o revertida. Los demás usuarios de la base de datos no verán dichos cambios hasta que sean consignados.

Cuando se insertan datos, se recomienda usar transacciones para mantener la consistencia de datos relacionales y por motivos de rendimiento.

Parámetros

connection

Un identificador de conexión de Oracle, devuelto por oci_connect(), oci_pconnect(), o oci_new_connect().

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de oci_commit()

<?php

// Insertar en varias tablas, y revertir los cambios si ocurrió un error

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

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

// La bandera OCI_NO_AUTO_COMMIT indica a Oracle que no consigne el INSERT inmediatamente
// Use OCI_DEFAULT como bandera para PHP <= 5.3.1. Las dos banderas son equivalentes
$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);  // revertir los cambios en ambas tablas
    
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

// Consignar los cambios de ambas tablas
$r oci_commit($conn);
if (!
$r) {
    
$e oci_error($conn);
    
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

?>

Notas

Nota:

Las transacciones son revertidas automáticamente cuando se cierra la conexión, o cuando el script finaliza, lo que suceda antes. Es necesario llamar a oci_commit() para consignar la transacción.

Cualquier llamada a oci_execute() que utilice el modo OCI_COMMIT_ON_SUCCESS, de forma explícita o por omisión, consignará cualquier transacción no consignada previamente.

Cualquier sentencia DDL de Oracle, como CREATE o DROP, consignará automáticamente cualquier transacción no consignada.

Ver también