使用行版本控制可确定是否已更改了行并检测冲突。启用行版本控制之后,会对表的每一行进行配置以使其包含校验和及版本号。当首次插入行时,会自动生成校验和,并且版本设置为 1。每次更新该行时,版本都会加一,但校验和值保持不变。 如果删除一行并在表中重新插入另一行,那么通过行版本控制可识别出新插入的行不同于删除的行。 通过比较辅助服务器和主服务器之间的行校验和与行版本,可以检测出数据冲突。
Web 应用程序可以使用版本列以确定之前检索对象中包含的信息是否仍处于最新状态。例如,Web 应用程序可能会向客户显示待售商品。 当客户决定购买某个产品时,应用程序会检查该产品行的版本列以便确定是否有关该产品的信息发生了变化。
如果在环境中客户机应用程序可更新辅助服务器上的数据,请使用行版本控制来尽可能减少网络使用,特别是表中包含大量行的情况。否则,辅助服务器上的所有行将与主服务器上的所有行进行比较,以确定是否发生了更新。
要将行版本控制添加到现有表,可使用下列语法:
ALTER TABLE tablename add VERCOLS;
同样,您可以使用以下语法来删除表中的行版本控制:
ALTER TABLE tablename drop VERCOLS;
要创建带行版本控制的新表,可使用以下语法:
CREATE TABLE tablename ( Column Name Datatype Column Name Datatype Column Name Datatype ) with VERCOLS;
启用了行版本控制之后,每次更新行,ifx_row_version 都会递增 1;但是,Enterprise Replication 执行的行更新不会递增行版本。要使用 Enterprise Replication 更新服务器上的行版本,必须在复制参与者定义中包含 ifx_row_version 列。