[odb-users] [Feature request] ODB should support CREATE TABLE IF
NOT EXISTS for SQLite (and, preferably, for other drivers)
aongeeno at openmailbox.org
aongeeno at openmailbox.org
Wed May 31 05:05:20 EDT 2017
Good day! As I know there is no possibility to generate schema SQL with keywords "IF NOT EXISTS".
This can be useful for embedded. In official examples there is schema/embedded.
> // The following alternative version only creates the schema if it
> // hasn't already been created. To detect the existence of the schema
> // this version tries to query the database for a person object. If
> // the corresponding table does not exist, then an exceptions will be
> // thrown in which case we proceed to creating the schema.
> //
> /*
> {
> transaction t (db->begin ());
> try
> {
> db->query<person> (false);
> }
> catch (const odb::exception& e)
> {
> schema_catalog::create_schema (*db);
> }
> t.commit ();
> }
> */
This looks like as dirty hack, because we can catch different odb::exception and need to know that this is not a driver problem. This makes code complicated and not so robust. Much better will be use supported feature CREATE TABLE IF NOT EXISTS.
Any suggestions?
More information about the odb-users
mailing list