aboutsummaryrefslogtreecommitdiff
path: root/mssql/types/driver.cxx
diff options
context:
space:
mode:
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)
{