Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » MobiLink - 入门 » MobiLink 教程 » 教程:MobiLink 简介

 

第 5 课:改进同步模型

本课将介绍如何对同步模型进行更改,并探讨一些可供您在开发模型时使用的选项。

前提条件

本课假定您已完成前面的所有课程。 请参见第 1 课:建立 MobiLink 统一数据库

本课假定您拥有在教程教程:MobiLink 简介开头的权限部分中列出的角色和特权。

 任务
  1. 在 Sybase Central 左窗格的 [MobiLink 16] 下,展开 [mlintro_project] » [同步模型] » [sync_mlintro]。

  2. 在 [映射] 选项卡中,为 Product 表选择行。

  3. 在下部窗格中选择 [正在处理冲突] 选项卡。

  4. 为 [冲突解决] 选择 [统一]。选择此选项意味着,如果某个行在统一数据库和远程数据库中均被修改,则会将统一数据库中的值视为正确的值。

  5. 在 [部署] 选项卡中单击 [测试]。如果提示您保存同步模型,单击 []。

  6. 选择 [数据] 选项卡,然后单击 [同步] 更新远程数据库。

  7. 编辑名为 [Screwmaster Drill] 的行,然后将统一数据库中的数量设置为 20,将远程数据库中的数量设置为 10。

  8. 单击 [同步]。远程数据库和统一数据库均应显示数量 20。

  9. 关闭 [测试] 窗口。

  10. sync_mlintro 模型选择 [事件] 选项卡。此页面将显示 MobiLink 服务器为该同步模型运行的 SQL 语句。左边界处的绿色指示条表示这些 SQL 语句是根据您在 [映射] 选项卡中所做的选择自动生成的。

    有时 [映射] 选项卡中提供的选项可能不足以满足您的方案。这种情况下,可使用 [事件] 选项卡来进一步自定义同步脚本。

  11. 在 [事件] 选项卡中,查找 Product 表的 upload_insert 事件。此事件显示 MobiLink 服务器在从远程数据库接收新行时所执行的 SQL 语句。我们将对此事件进行更改,将任意新订单的最大数量限制为 50。文本 {ml r."quantity"} 代表上载的远程数量列。将其更改为以下内容:

    If {ml r."quantity"} < 50 then {ml r."quantity"} else 50 end if

    现在,完整的 upload_insert 事件应如下所示:

    Product (DBA): upload_insert
    /* Insert the row into the consolidated database. */
    INSERT INTO "DBA"."Product" ( "name", "quantity" )
    VALUES ( {ml r."name"}, If {ml r."quantity"} < 50 then {ml r."quantity"} else 50 end if )

    请注意,边界处的 upload_insert 事件指示条现在为黄色,表示 [映射] 选项卡中的设置已被替换。

  12. 在 [部署] 选项卡中单击 [测试]。选择 [数据] 选项卡,然后单击 [同步]。现在,在远程数据库的下部窗格中右击。选择 [添加行],然后添加一行,该行具有名称 Hammer 和数量 200。单击 [同步]。现在,统一数据库和远程数据库中 Hammer 行的值均为 50。

  13. 关闭 [测试] 窗口并返回 [事件] 选项卡。右击 upload_insert 事件脚本,然后选择 [恢复 'Product (DBA): upload_insert' 脚本]。边界处的指示条现在再次变为绿色,之前进行的自定义也已撤消。

结果

已对同步模型进行更改。

 另请参见