|
|
Как
только дескриптор транзакции и TPB
подготовлены, транзакция может стартовать
посредством вызова isc_start_transaction(),
использующей следующий синтаксис: ISC_STATUS
isc_start_transaction(ISC_STATUS *status vector, isc_tr_handle
*trans_handle, short
db_count, isc_db_handle
*&db_handle, unsigned
short tpb_length, char
*tpb_ad); Для
транзакции, которая выполняется для
единственной базы данных, установите
db_count в 1. db_handle
должен быть установлен уже ф-ей isc_attach_database
(), tpb_length - размер TPB, и isc_tpb - адрес TPB. Пример: #include
<ibase.h> .
. . ISC_STATUS
status_vector[20]; isc_db_handle
db1; isc_tr_handle
tr1; static
char isc_tbp[] = {isc_tpb_version3, isc_tpb_write, isc_tpb_concurrency, isc_tpb_wait}; .
. . /*
Здесь инициализируем дескрипторы БД и
транзакции */ db1
= 0L; tr1
= 0L; .
. . /*
Код для подключения к БД здесь опущен*/ isc_start_transaction(status_vector,
&tr1, 1, &db1, (unsigned short) sizeof(isc_tpb), isc_tpb); Транзакция
может быть открыта для нескольких БД. Для
этого установите db_count в число БД для
которых будет запущена транзакция, где для
каждой БД повторяется группа параметров
db_handle, tpb_length, and isc_tpb.
Пример: isc_start_transaction(status_vector,
&tr1 ,2, &db1,(unsigned short) sizeof(isc_tpb), &tpb, &db2,(unsigned
short) sizeof(tpb),&tpb);
|
Дизайн: Piton Alien |