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

Ludo Brands ludo.brands at free.fr
Mon Jan 7 16:47:27 CET 2013

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:
- 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. Just take a look at the long list of sqlite 
PRAGMA commands that, for some, can't be executed inside a transaction. 
On top of that the list changes considerably between the different 
databases and the confusion between the different db method variations 
can become very big. Fe in SQLServer you can also attach a database with 
a SQL statement but the parameters are quite different : 
- A lot of these commands are non SQL standard and have been introduced 
over time which raises also the question of version compatibility when 
implementing sqldb methods to support them.


More information about the Lazarus mailing list