aboutsummaryrefslogtreecommitdiff
path: root/mssql/types/driver.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2013-01-14 16:01:06 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2013-01-14 16:01:06 +0200
commit23a537ac98066dc3994100548890112aa6e8d8ac (patch)
tree20f5bc5d93578a35437dd004dcc6a435aba173eb /mssql/types/driver.cxx
parent42fee52342964c689be0e48bed07637be2fb45c1 (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.cxx26
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)
{