diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2013-12-04 11:30:33 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2013-12-04 11:30:33 +0200 |
commit | 3417fc7c0df3b1b01750874587c4f3bb2ef02f45 (patch) | |
tree | a35f2439f7f72212d8ad05d3b8175e992d9a917f /odb/relational/mysql | |
parent | a0bf13c2522cc9c029af53f40970a3d0c19e178f (diff) |
Implement on_delete pragma for object pointers
Translates to the ON DELETE SQL clause.
Diffstat (limited to 'odb/relational/mysql')
-rw-r--r-- | odb/relational/mysql/schema.cxx | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/odb/relational/mysql/schema.cxx b/odb/relational/mysql/schema.cxx index f06914a..473e746 100644 --- a/odb/relational/mysql/schema.cxx +++ b/odb/relational/mysql/schema.cxx @@ -145,6 +145,20 @@ namespace relational { create_foreign_key (base const& x): base (x) {} + void + diagnose (sema_rel::foreign_key& fk) + { + if (fk.on_delete () != sema_rel::foreign_key::no_action) + { + cerr << "warning: foreign key '" << fk.name () << "' has " << + "ON DELETE clause but is disabled in MySQL due to lack " + "of deferrable constraint support" << endl; + + cerr << "info: consider using non-deferrable foreign keys (" << + "--fkeys-deferrable-mode)" << endl; + } + } + virtual void traverse_create (sema_rel::foreign_key& fk) { @@ -156,6 +170,8 @@ namespace relational base::traverse_create (fk); else { + diagnose (fk); + // Don't bloat C++ code with comment strings if we are // generating embedded schema. // @@ -178,6 +194,8 @@ namespace relational base::traverse_add (fk); else { + diagnose (fk); + if (format_ != schema_format::sql) return; |