SQLite

SQLite is a small database engine suitable to embed in applications as a data store for a single user. It is possibly the world's most used database since all android phones have this included.

Having a small footprint comes with a penalty - it does not support the Drop column! As MDriven is all about changing your mind when you want to, the Drop column is something you probably want to have.

To adapt to this limitation, we added a new config setting named DropColumnsByRecreateTableTemplate.

The updated SQLite persistence mapper now has this setting as default:

sb.AppendLine("CREATE TABLE <TableName>_backup(<KeepColumnsForCreate>);");
sb.AppendLine("INSERT INTO <TableName>_backup SELECT <KeepColumns> FROM <TableName>;");            
sb.AppendLine("DROP TABLE <TableName>;");            
sb.AppendLine("CREATE TABLE <TableName>(<KeepColumnsForCreate>);");            
sb.AppendLine("INSERT INTO <TableName> SELECT <KeepColumns> FROM <TableName>_backup;");            
sb.AppendLine("DROP TABLE <TableName>_backup;");            
config.DropColumnTemplate = ""; // SQLite does not support removing column by column            
config.DropIndexTemplate = "";            
config.DropColumnsByRecreateTableTemplate= sb.ToString(); 

We have added an extra pass in DBEvolution - so that we see if you want us to recreate the table this way for you.

This page was edited more than 6 months ago on 06/17/2024. What links here