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)
ibase_trans — Rozpoczyna transakcję
$opcje_transakcji
[, resource $identyfikator_połączenia
]] ) : resource$identyfikator_połączenia
[, int $opcje_transakcji
]] ) : resourceRozpoczyna transakcję.
Informacja:
Pierwsze wywołanie ibase_trans() nie zwraca domyślnej transakcji w domyślnym połączeniu. Wszystkie transakcje rozpoczęte w wyniku wywołania ibase_trans() będą wycofane w momencie zakończenia działania skryptu, jeżeli nie zostaną jawnie potwierdzone lub wycofane, odpowiednio za pomocą ibase_commit() lub ibase_rollback().
Informacja:
Ta funkcja akceptuje złożone argumenty
opcje_transakcji
iidentyfikator_połączenia
. To pozwala transakcjom na wielokrotne połączenia do baz danych i stosowanie algorytmu dwufazowego potwierdzania. Tym samym można mieć pewność, że we wszystkich bazach danych operacje zakończą się prawidłowo lub błędnie. To NIE oznacza, że można używać tabel z różnych baz danych w jednym zapytaniu!Podczas korzystania w tym samym czasie z wielu baz danych, należy podawać obydwa parametry
identyfikator_połączenia
iidentyfikator_transakcji
przy wywoływaniu ibase_query() i ibase_prepare().
opcje_transakcji
opcje_transakcji
mogą być kombinacją stałych
IBASE_READ
,
IBASE_WRITE
,
IBASE_COMMITTED
,
IBASE_CONSISTENCY
,
IBASE_CONCURRENCY
,
IBASE_REC_VERSION
,
IBASE_REC_NO_VERSION
,
IBASE_WAIT
i
IBASE_NOWAIT
.
identyfikator_połączenia
Identyfikator połączenia do Firebird/InterBase. Jeżeli zostanie pominięty, to użyte będzie istniejące połączenie.
Zwraca identyfikator transakcji, lub FALSE
w przypadku błędu.
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);