Example of using ibase_trans with ibase_prepare and ibase_execute:
$dbh = ibase_connect( ... );
$sql = " ... ";
$trans = ibase_trans( IBASE_DEFAULT,$dbh );
$sth = ibase_prepare( $trans, $sql );
$res = ibase_execute( $sth, $params_if_any );
if ($res == false) {
//log failure if you want
}
ibase_commit($trans);
//free if needed
ibase_free_query($sth);
unset($res);
ibase_trans
(PHP 4, PHP 5)
ibase_trans — Comienza una transacción
Descripción
Comienza una transacción.
Note:
El comportamiento de esta función ha cambiado en PHP 5.0.0. La primera llamada a ibase_trans() no devuelve la transacción por omisión de una conexión. Todas las transacciones que comiencen por ibase_trans() se desharán al finalizar el script siempre y cuando no se hayan llevado a cabo explícitamente, o ya se hubieran deshecho mediante ibase_commit() o ibase_rollback() respectivamente.
Note:
En PHP 5.0.0. y superior esta función acepta múltiples parámetros trans_args y link_identifier. Esto permite llevar a cabo transacciones sobre múltiples conexiones a bases de datos, las cuales se llevan a cabo utilizando un algoritmo de dos fases. Esto significa que una actualización podría o bien fallar en todas las bases de datos, o bien tener éxito en todas. NO significa que se puedan usar en una misma consulta tablas de distintas bases de datos.
Si se usaran transacciones sobre múltiples bases de datos, se deberá especificar tanto el link_id como el transaction_id en las llamadas a ibase_query() y a ibase_prepare().
Parámetros
- trans_args
-
trans_args puede ser una combinación de IBASE_READ, IBASE_WRITE, IBASE_COMMITTED, IBASE_CONSISTENCY, IBASE_CONCURRENCY, IBASE_REC_VERSION, IBASE_REC_NO_VERSION, IBASE_WAIT y IBASE_NOWAIT.
- link_identifier
-
Identificador de enlace a InterBase. Si se omite, se utilizará el último enlace que se haya abierto.
Valores devueltos
Devuelve un manejador de transacción, o FALSE en caso de error.
When using transactions, you must execute queries using the transaction identifier as the link_identifier in ibase_query.
Example:
$db = ibase_connect( ... );
$tr = ibase_trans();
$result = ibase_query($tr, $sql1);
$result = ibase_query($tr, $sql2);
ibase_rollback($tr);
You must use ibase_query($tr, $sql1). Calling ibase_query($db, $sql1) will not allow you to roll back - it will be commited when the script finishes executing.
