为 MobiLink 同步服务器提供一个可以在对上载流的基于语句的处理过程中使用的事件,该事件用于识别更新冲突。
| 项 | 参数 |
|---|---|
| 1 | primary key 1 |
| 2 | primary key 2 |
| ... | ... |
无。
基于语句的 upload_fetch 脚本用于从同步表中读取行以便检测冲突。它随 upload_update 事件使用。
结果集的列数必须与从远程数据库为该表上载的列数相匹配。如果返回值与上载的行中的前映像不匹配,则会产生冲突。
您可以为远程数据库的每个表编写一个 upload_fetch 脚本。
此脚本在未定义下面的脚本时可能会被忽略:upload_new_row_insert、upload_old_row_insert 和 resolve_conflict。
下面的 SQL 脚本来自 Contact 示例并可以在 SQL Anywhere 安装目录的 Samples\MobiLink\Contact\build_consol.sql 中找到。它用于识别在上载远程数据库中 Product 表的更新行时发生的冲突。该脚本从名称也为 Product 的表中选择行,这两个表的名称也可以不匹配,匹配与否取决于统一数据库与远程数据库的模式。
call ml_add_table_script( 'ver1', 'table1', 'upload_fetch', 'SELECT id, name, size, quantity, unit_price FROM Product WHERE id=?')
此脚本必须返回有效的 SQL。
下面的存储过程调用在同步脚本版本 ver1 时将名为 uploadFetchTable 的 Java 方法注册为 upload_fetch 表事件的脚本。
call ml_add_java_table_script( 'ver1', 'table1', 'upload_fetch', 'ExamplePackage.ExampleClass.uploadFetchTable' )
下面是示例 Java 方法 uploadFetchTable。它调用 genUF 来动态生成一条 UPLOAD 语句。
public string uploadFetchTable()
{ return( genUF(_curTable) ); }SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。