Collection Contents 上一页 下一页 PDF

MobiLink 管理指南

同步事件

download_delete_cursor 表事件


功能 

定义游标以选择要从远程数据库中删除的行。

参数 

在下表中,[说明] 部分提供 SQL 数据类型。如果您使用 Java 或 .NET 编写脚本,则应该使用相应的数据类型。请参见 SQL-Java 数据类型SQL-.NET 数据类型

只有当未指定任何后续参数时,事件参数才是可选的。如果要使用参数 2,您必须使用参数 1。

参数 说明
1 last_download TIMESTAMP
2 ml_username VARCHAR(128)
缺省操作 

无。

说明 

MobiLink 同步服务器打开一个只读游标,并使用此游标读取将要在远程数据库中下载然后插入或更新的行的列表。该脚本必须包含一个 SELECT 语句,该语句必须能够返回将要从远程数据库的表中删除的行的主键值。

参数为 last_download 时间戳及用户名。您可以通过在 SQL 语句中放入一个问号以使用这些值。

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

如果在 download_delete_cursor 中某个表的一个或多个行的主键列为 NULL,则 MobiLink 将通知远程,让其删除该表中的所有数据。有关此行为的完整说明,请参见删除表中的所有行

在下载阶段紧前面的最后一次成功的同步过程中,从统一数据库中获取的时间值即为 last_download 时间戳。如果当前用户从未成功地进行过同步,则该值将被设置为 1900-01-01。

注意,统一数据库中删除的行不会出现在 download_delete_cursor 事件定义的结果集中,因此不会从远程数据库中自动删除。一个用于标识将要从远程数据库中删除的行的方法是向统一数据库表添加一列,用以将行标识为非活动。

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

另请参见 
SQL 示例 

下例来自于 Contact 示例并可以在 Samples\MobiLink\Contact\build_consol.sql 中找到。它从远程数据库中删除满足下列条件的所有客户:自从上次该用户下载数据后已更改 (Customer.last_modified >= ?),并且

Java 示例 

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

call ml_add_java_table_script(
   'ver1',
   'table1',
   'download_delete_cursor',
   'ExamplePackage.ExampleClass.downloadDeleteCursor' )

下面是示例 Java 方法 downloadDeleteCursor。它调用的 Java 方法可以生成下载删除游标的 SQL。

public String downloadDeleteCursor( Timestamp ts,
String user )
{  return( getDownloadCursor( _curUser, _curTable ) ); }
.NET 示例 

下面的存储过程调用在同步脚本版本 ver1 和表 table1 时将名为 DownloadDeleteCursor 的 .NET 方法注册为 download_delete_cursor 表事件的脚本。

call ml_add_dnet_table_script(
  'ver1',
  'table1',
  'download_delete_cursor',
  'TestScripts.Test.DownloadDeleteCursor'
)

下面是示例 .NET 方法 DownloadDeleteCursor。它调用的 .NET 方法可以生成下载删除游标的 SQL。

public string DownloadDeleteCursor(
  DateTime timestamp,
  string user )
{  return( getDownloadCursor( _curUser, _curTable ) ); }

Collection Contents 上一页 下一页 PDF