为了在OpenEdge数据库中控制记录版本,我现在有了一个应该运行良好的解决方案,并且相当简单。
需要具有行版本的每个表都将具有Integer类型的RowVersion字段。
我们有一个程序在创建新表时生成写入触发器,因此更新它以添加一些新代码非常简单。写入触发器现在检查记录以查看该表是否具有RowVersion字段,如果是,则将该版本增加1。 在更新之前检查以确保行版本匹配是程序员在其运行的代码/脚本中的责任。
这种方法有几个原因,但它保持简单:
在运行查询和调试数据库时,整数很简单易读。鉴于我们的应用程序使用,我们不太可能溢出整数。
不需要序列来保持rowversions的唯一性。他们不需要。每条记录只增加自己的行版本。
虽然ProDataSets可以执行乐观锁定,但无法保证使用这些记录始终可以使用这些记录进行读/写,因此字段使我们可以根据用途灵活地编写不同的代码。
通常在更新之前应检查行版本,如果存在数据问题,则可能需要运行修复脚本以覆盖数据。为此,我们将检查放在一个调用过程(而不是触发器)中,以便对记录进行写操作。