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