Subject Re: [firebird-support] Re: Transactions and dbExpress
Author Martijn Tonies
Hello Christian,

> > Well, it's ... different. :-) ... At least you can start multiple
> > transactions!
> You sound like a teacher, always try to see something positive :-).

I have my moments... but also a very dark side which usually includes
comments about smacking people in the back of their head ;-)

No seriously, dbExpress isn't too bad. It's just a bit weirdish and
very undocumented.

> > If you don't start a transaction, the transaction isolation from
> > TSQLConnection.Params is used and it's auto-commit.
>
> But what happens with SELECT statements? Do you open a transaction per
> statement? And when does the auto-commit happen?

It will use the global transaction. The auto-commit happens right after
closing
the cursor.

Mind you, with dbExpress, the idea is to keep no open cursors. That's why
dbExpress is uni-directional.

> > Through the TransactionLevel property:
> >
> > Indicates the transaction to which this dataset belongs.
>
> OK, this is the value of TTransactionDesc.TransactionID I think?

I think so, according to the help:
"TransactionLevel is the same as the transaction identifier that is supplied
to the connection's StartTransaction method."

>Is it
> in my responsability, to manage the used TransactionID's? Do they
> have to be unique globally or only per TSqlConnection ?

You have to manage the transaction IDs, they have to be global on a
per TSQLConnection basis for our driver...

With regards,

Martijn Tonies
Database Workbench - tool for InterBase, Firebird, MySQL, Oracle & MS SQL
Server
Upscene Productions
http://www.upscene.com