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.
(PHP 5, PHP 7 < 7.4.0)
ibase_trans — Startet eine Transaktion
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
- undlink_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
undtransaction_id
in den Aufrufen von ibase_query() und ibase_prepare() verwenden.
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.
Gibt ein Transaktions-Handle zurück oder false
on bei einem Fehler.
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.
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.
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);