diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2017-06-22 15:55:34 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2017-06-22 15:55:34 +0200 |
commit | e783a1120b174bac40697000d218796ddf421dfe (patch) | |
tree | 452a73738b7298bfa0d8e5dc8bb47b7e620f868d | |
parent | af920242360734b5bedb63925067daa3c7404dc8 (diff) |
Handle ON DELETE and DEFERRABLE in special SQLite migration code
-rw-r--r-- | odb/relational/sqlite/schema.cxx | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/odb/relational/sqlite/schema.cxx b/odb/relational/sqlite/schema.cxx index 649f8e0..6d1885b 100644 --- a/odb/relational/sqlite/schema.cxx +++ b/odb/relational/sqlite/schema.cxx @@ -187,6 +187,21 @@ namespace relational os << " CONSTRAINT " << quote_id (afk->name ()) << " REFERENCES " << quote_id (afk->referenced_table ().uname ()) << " (" << quote_id (afk->referenced_columns ()[0]) << ")"; + + bool del (afk->on_delete () != sema_rel::foreign_key::no_action); + bool def (!afk->not_deferrable ()); + + if (del || def) + { + instance<relational::create_foreign_key> cfk (*this); + + if (del) + cfk->on_delete (afk->on_delete ()); + + if (def) + cfk->deferrable (afk->deferrable ()); + } + afk->set ("sqlite-fk-defined", true); // Mark it as defined. } |