ibase_trans

(PHP 5, PHP 7)

ibase_transRozpoczyna transakcję

Opis

ibase_trans ([ int $opcje_transakcji [, resource $identyfikator_połączenia ]] ) : resource
ibase_trans ([ resource $identyfikator_połączenia [, int $opcje_transakcji ]] ) : resource

Rozpoczyna 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 i identyfikator_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 i identyfikator_transakcji przy wywoływaniu ibase_query() i ibase_prepare().

Parametry

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.

Zwracane wartości

Zwraca identyfikator transakcji, lub FALSE w przypadku błędu.

add a note add a note

User Contributed Notes 3 notes

up
2
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
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
2
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