Collection Contents 上一页 下一页 PDF

MobiLink 管理指南

同步事件

upload_old_row_insert 表事件


功能 

用于基于语句的上载的冲突解决脚本通常要求访问从远程数据库上载的行的旧值及新值。该事件可用于处理从远程数据库中上载的行的旧值。

参数 
参数
ml_username VARCHAR(128)。此参数是可选的。
1 column 1
2 column 2
... ...
缺省操作 

无。

说明 

在 MobiLink 客户端向 MobiLink 同步服务器发送一个更新后的行时,发送的数据中不仅包含该行的新值(后映像),而且还将包含旧行值的副本(前映像)。如果前映像与统一数据库中的当前值不匹配,表示检测到了冲突。

此事件允许您将前映像的值保存到表中。此事件可以帮助您为基于语句的更新开发冲突解决过程。在对相应的统一数据库表执行更新之前,此事件的参数将保存远程数据库中的旧行值。此事件也可用于在基于语句的强制冲突模式中插入行。

此事件的脚本通常是一条插入语句,它将旧行插入到临时表中以供 resolve_conflict 脚本使用。

您可以为远程数据库的每个表编写一个 upload_old_row_insert 脚本。

对于 Java 和 .NET 应用程序,此脚本必须返回有效的 SQL。

另请参见 
SQL 示例 

下例处理远程数据库的 product 表中进行的更新。该脚本将旧的行值插入到名为 product_conflict 的全局临时表中。表的最后一列将该行标识为旧行。

call ml_add_table_script(
  'ver1',
  'table1',
  'upload_old_row_insert',
'insert into DBA.product_conflict(
id, name, size, quantity, unit_price, row_type )
values( ?, ?, ?, ?, ?, 'O' )')
Java 示例 

下面的存储过程调用在同步脚本版本 ver1 时将名为 uploadOldRowInsertTable 的 Java 方法注册为 upload_old_row_insert 表事件的脚本。

call ml_add_java_table_script(
  'ver1',
  'table1',
  'upload_old_row_insert',
  'ExamplePackage.ExampleClass.uploadNewRowInsertTable'
)

下面是示例 Java 方法 uploadOldRowInsertTable。它动态生成 UPLOAD 语句。

public string uploadOldRowInsertTable()
{  old" + getCols(_curTable) +
   "values" + getQM(_curTable)); }

Collection Contents 上一页 下一页 PDF