On Sun, 30 Apr 2006, [UTF-8] Bogusław Brandys wrote:

> Michael Van Canneyt wrote:
> >
> > On Sun, 30 Apr 2006, Joost van der Sluis wrote:
> >
> >> On Sun, 2006-04-30 at 20:09 +0200, Michael Van Canneyt wrote:
> >>> On Sun, 30 Apr 2006, Joost van der Sluis wrote:
> >>>> I have a problem that I do not understand.
> >>>>
> >>>> the following doesn't work with firebird:
> >>>>
> >>>>   Fconnection.ExecuteDirect('create table FPDEV (id INT)');
> >>>>   Fconnection.ExecuteDirect('insert into FPDEV(id) values (1)');
> >>>>
> >>>> But the following does:
> >>>>
> >>>>   Fconnection.ExecuteDirect('create table FPDEV (id INT)');
> >>>>   FConnection.Transaction.commitretaining;
> >>>>   Fconnection.ExecuteDirect('insert into FPDEV(id) values (1)');
> >>>>
> >>>> But both statements are executed within the same transaction?
> >>> No they are not. CommitRetaining is like
> >>> Commit;
> >>> Starttransaction;
> >>> only keeps the resources of the current transaction.
> >>>
> >>> In all the years I worked with interbase/firebird,
> >>> I've learned to explicitly commit after each DDL statement.
> >> Ok, that explains it. But in fact that's a bug in Interbase/Firebird
> >> imho...
> >
> > It is. They know about it, too.
> >
> > Michael.
>
> Well,sort of, but how you can insert data into table which is not
> created yet ?

It is created.
The transaction is not yet committed, so the table
is not visible outside the current transaction, but
inside the transaction, it exists, so one would expect
that inserts work...

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to