"Oleg Matveyev" ...
>
> > >     isc_start_transaction
> > >
> > >     isc_dsql_allocate_statement
> > >     isc_dsql_prepare
> > >     isc_dsql_execute
> > >     (isc_dsql_fetch)
> > >
> > >     isc_commit_transaction - вот на данном этапе, сервер нормально
> > > переживет?
> >
> > А почему нет? Время жизни стейтмента по определению больше, чем
> транзакции.
>
> Так, тогда значит это правильный порядок?
> а что мешает мне открыть бааальшую транзакцию...:
>
>  isc_start_transaction
>
> for(;;)
> {
> isc_dsql_allocate_statement
> isc_dsql_prepare
> isc_dsql_execute
> (isc_dsql_fetch)
> isc_dsql_free_statement
> }
>
> isc_commit_transaction
>
> тоже вроде все верно, хотя, конечно - неоптимально.

    Не забывай о том, что у isc_dsql_free_statement есть ещё один
параметр. Оптимально, в данном случае, будет так :

isc_start_transaction
isc_dsql_allocate_statement
isc_dsql_prepare // если текст запроса в цикле не меняется

for(;;)
{
  // isc_dsql_prepare // если текст запроса в цикле меняется
  isc_dsql_execute
  (isc_dsql_fetch)
  isc_dsql_free_statement // DSQL_close
}

isc_dsql_free_statement // DSQL_drop
isc_commit_transaction

-- 
Хорсун Влад


Ответить