为 MobiLink 同步服务器提供一个在上载流处理过程中使用的事件,该事件用于处理远程数据库中更新的行。
| 子句 | 参数 |
|---|---|
| SET |
非主键列 1
非主键列 2 ... |
| WHERE |
primary key 1
primary key 2 ... |
无。
基于语句的 upload_update 脚本可用于直接更新列值,该列值由 UPLOAD 语句指定。
WHERE 子句必须包括正被同步的所有主键列。SET 子句必须包含正被同步的所有非主键列。
您可以在 SET 子句中使用表中存在的任意非主键列,MobiLink 将发送正确的列值数目。同样,在 WHERE 子句中,您也可以使用任意数目的主键值,但它们必须都在这里指定,MobiLink 将发送正确的值。MobiLink 将发送这些列值和主键值,发送的顺序与表模式的 MobiLink 报告中列和主键出现的顺序相同。您可以使用 -vh 选项为该表模式确定列的顺序。
您可以为远程数据库的每个表编写一个 upload_update 脚本。
对于 Java 和 .NET 应用程序,此脚本必须返回有效的 SQL。
下例将处理对远程数据库中的 Customer 表所做的更新。该脚本将更新统一数据库中名为 Customer 的表中的值。
call ml_add_table_script( 'ver1', 'table1', 'upload_update', 'UPDATE Customer SET name=?, rep_id=? WHERE cust_id=?')
下面的存储过程调用在同步脚本版本 ver1 时将名为 uploadUpdateTable 的 Java 方法注册为 upload_update 表事件的脚本。
call ml_add_java_table_script( 'ver1', 'table1', 'upload_update', 'ExamplePackage.ExampleClass.uploadUpdateTable' )
下面是示例 Java 方法 uploadUpdateTable。它调用名为 genUU 的方法来动态生成一条 UPLOAD 语句。
public string uploadUpdateTable()
{ return( genUU(_curTable) ); }下面的存储过程调用在同步脚本版本 ver1 和表 table1 时将名为 UploadUpdate 的 .NET 方法注册为 upload_update 表事件的脚本。
call ml_add_dnet_table_script( 'ver1', 'table1', 'upload_update', 'TestScripts.Test.UploadUpdate' )
下面是调用 UploadUpdate 的 C# 签名。
public string UploadUpdate()
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。