[Lazarus] SQLDB - Can't attach second SQLite database because transaction

Michael Van Canneyt michael at freepascal.org
Mon Jan 7 17:23:59 CET 2013



On Mon, 7 Jan 2013, Ludo Brands wrote:

> On 07/01/2013 16:01, Michael Van Canneyt wrote:
>> 
>> 
>> On Mon, 7 Jan 2013, Krzysztof wrote:
>> 
>>> 
>>> 
>>> 
>>> 2013/1/7 Michael Van Canneyt <michael at freepascal.org>
>>> 
>>> Maybe we should make a method for this in TSQLite3Connection ?
>>> 
>>> 
>>> It would be great. Because without this we can't use all opportunities of 
>>> SQLite, like attaching databases or also VACUUM (trim and pack database)
>> 
>> I meant a method Procedure AttachDatabase(Const AFileName, AnAlias : 
>> String);
>> ?
>> 
>> Other methods can also be added, of course.
>> 
> A method to execute a statement outside a transaction would also be useful 
> for the following reasons:

That will have to be database-specific.

For example Firebird does not allow you to execute statements "outside a transaction".

> - Some statements end implicitly a transaction. Ex: 
> http://dev.mysql.com/doc/refman/5.0/en/implicit-commit.html or all oracle DDL 
> statements. sqldb is not aware that the transaction is terminated and its 
> state doesn't match the db state.
> - You can't make a method for every database command that has to run outside 
> a transaction.

Why not ?

If they are implemented in the specific connections, I do not see what problem there 
could be with that. Such methods already exist. People relying on such constructs 
should be aware that they are database-specific.

Problems arise only if you try to elevate some methods to TSQLConnection for 
something that is not supported by all databases...

Michael.




More information about the Lazarus mailing list