ibase_trans

(PHP 5, PHP 7)

ibase_transStartet eine Transaktion

Beschreibung

ibase_trans ([ int $trans_args [, resource $link_identifier ]] ) : resource
ibase_trans ([ resource $link_identifier [, int $trans_args ]] ) : resource

Startet eine Transaktion

Hinweis:

Der erste Aufruf von ibase_trans() gibt nicht die Standardtransaktion einer Verbindung zurück. Alle Transaktionen, die mittels ibase_trans() gestartet wurden, werden am Ende des Skripts rückgängig gemacht, sofern diese nicht mit ibase_commit() festgeschrieben oder mit ibase_rollback() rückgängig gemacht wurden.

Hinweis:

Diese Funktion akzeptiert mehrere trans_args- und link_identifier-Argumente. Dies erlaubt Transaktionen über mehrere Datenbankverbindungen, die mittels eines 2-Phasen-Commit-Algorithmus festgeschrieben werden. Dies bedeutet, dass Sie sich darauf verlassen können, dass die Aktualisierungen entweder in jeder Datenbank erfolgreich sind oder in jeder Datenbank fehlschlagen. Es bedeutet NICHT, dass Sie Tabellen aus verschiedenen Datenbanken in derselben Abfrage verwenden können!

Wenn Sie Transaktionen über mehrere Datenbanken hinweg verwenden, müssen Sie die Parameter link_id und transaction_id in den Aufrufen von ibase_query() und ibase_prepare() verwenden.

Parameter-Liste

trans_args

trans_args darf eine Kombination aus IBASE_READ, IBASE_WRITE, IBASE_COMMITTED, IBASE_CONSISTENCY, IBASE_CONCURRENCY, IBASE_REC_VERSION, IBASE_REC_NO_VERSION, IBASE_WAIT und IBASE_NOWAIT sein.

link_identifier

Eine InterBase/Firebird-Verbindungskennung. Wenn nicht angegeben, wird der zuletzt geöffnete Link angenommen.

Rückgabewerte

Gibt ein Transaktions-Handle zurück oder FALSE on bei einem Fehler.

add a note add a note

User Contributed Notes 3 notes

up
2
jon at tgpsolutions dot com
17 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
7 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
1 year 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