ibase_trans

(PHP 5, PHP 7 < 7.4.0)

ibase_transComienza una transacción

Descripción

ibase_trans(int $trans_args = ?, resource $link_identifier = ?): resource
ibase_trans(resource $link_identifier = ?, int $trans_args = ?): resource

Comienza una transacción.

Nota:

La primera llamada a ibase_trans() no devolverá la transacción predeterminada 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.

Nota:

Esta función aceptará múltiples argumentos 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.

add a note add a note

User Contributed Notes 3 notes

up
2
jon at tgpsolutions dot com
21 years ago
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.
up
1
chAlx
12 years ago
Note that on some platforms ibase_trans($dbh), ibase_trans(IBASE_DEFAULT, $dbh) and ibase_trans($dbh, IBASE_DEFAULT) are not the same, but will run without errors in most cases.
up
1
marti at delfos dot net
5 years ago
Prevent lock conflicts example:

$db = ibase_connect( ... );
$tr = ibase_trans(IBASE_COMMITTED + IBASE_NOWAIT, $db);
$result = ibase_query($tr, $sql);
ibase_commit($tr);
ibase_close($dh);
To Top