diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2013-01-14 16:01:06 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2013-01-14 16:01:06 +0200 |
commit | 23a537ac98066dc3994100548890112aa6e8d8ac (patch) | |
tree | 20f5bc5d93578a35437dd004dcc6a435aba173eb /mssql/types/driver.cxx | |
parent | 42fee52342964c689be0e48bed07637be2fb45c1 (diff) |
Add support for MSSQL ROWVERSION
ODB can now use ROWVERSION column as an optimistic concurrency version.
Diffstat (limited to 'mssql/types/driver.cxx')
-rw-r--r-- | mssql/types/driver.cxx | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/mssql/types/driver.cxx b/mssql/types/driver.cxx index 6390950..a779079 100644 --- a/mssql/types/driver.cxx +++ b/mssql/types/driver.cxx @@ -217,6 +217,32 @@ main (int argc, char* argv[]) assert (o == *p); } } + + // Test optimistic concurrency using ROWVERSION. + // + { + rowversion o; + o.str = "abc"; + + { + transaction t (db->begin ()); + db->persist (o); + assert (o.version != 0); + t.commit (); + } + + { + transaction t (db->begin ()); + auto_ptr<rowversion> p (db->load<rowversion> (o.id_)); + assert (p->version == o.version); + p->str += 'd'; + db->update (*p); + assert (p->version > o.version); + db->reload (o); + assert (o.version == p->version); + t.commit (); + } + } } catch (const odb::exception& e) { |