过滤将在同步期间被复制的数据

当您对一个特定的表(例如,一组探访护士使用的 PATIENTS 表)创建预订时,出于性能方面的考虑会使您只复制该表中的数据子集。您可通过对预订中的每个表选择要复制的个别行或列来指定此子集。

例如,您可决定仅与使用 PATIENTS 表的探访护士相关的列为 PATIENT_NAME、ADDRESS、PHONE 和 DOCTOR 字段。然后,您可决定通过定义 WHERE 子句(该子句过滤为特定医生工作的护士的数据)来进一步过滤数据。

您可将预订的数据过滤器与组的过滤器集或用于个别用户的过滤器集组合使用,以进一步地过滤数据。

此任务是“创建 JDBC 预订”这一大型任务的一部分。当完成这些步骤后,返回到创建 JDBC 预订

过程

要过滤将在同步期间被复制的数据:

  1. 在“定义复制预订”窗口中,单击高级。“高级预订定义”笔记本打开。
    注意:
    必须预订源表主键列。如果源表中有一些列不在主键内, 则必须至少预订这些列的其中一列。
  2. 可选:选择在预订中要使用的列。
    1. 转至“高级预订定义”笔记本的“目标列”页。
    2. 使用“预订集”复选框来选择要在移动设备上创建的列。在移动设备上将不会创建未选择的列。
    3. 使用“复制”复选框来选择要复制到镜像数据库中的列。您可能需要将一列复制到镜像数据库中,但是并不想在手持设备上创建该列。例如,如果 NOT NULLABLE 列在服务器上并不存在 DEFAULT VALUE,并且您未在移动设备上创建它,则必须将它复制到镜像数据库中,并使用“缺省值”数据过滤器来提供缺省值。Sync Server 将使用在“缺省值”数据过滤器中指定的 DEFAULT VALUE 来将移动设备所创建的所有行复制到源中,以完成在服务器上没有缺省值的 NOT NULLABLE 源列的内容。
    4. 单击更改来修改目标列名、“缺省值”数据过滤器或约束。
    5. 单击关闭来关闭“创建索引”窗口。
  3. 可选:为目标表定义索引。
    1. 转至“高级预订定义”笔记本的“索引”页。
    2. 单击“添加”以打开“创建索引”窗口。“创建索引”窗口打开。
    3. 在“名称”字段中输入索引的名称。
    4. 使用 >、>>、<<< 按钮来选择您想包括在索引中的列。
    5. 使用上移下移按钮来对索引排序。
    6. 选择将索引按升序排序按降序排序
    7. 单击添加来添加索引。
    8. 单击关闭来关闭“创建索引”窗口。
  4. 可选:定义用来选择要包括在预订中的个别行的 WHERE 子句。即使所有列都出现在副本中,您也可以决定只让某些行成为预订的一部分。要显示样本 WHERE 子句,单击示例
    1. 转至“高级预订定义”窗口的“行”页。
    2. 需要的所有行字段中,输入一个 WHERE 子句,该子句定义您希望在预订中出现的行选择。只能从在“步骤 1”中选择的表中选择行。

      例如,假定您想要探访护士只能在 PATIENTS 表中看到 JOBCODE 列的值为 VNURSE 的数据行。您将输入以下 WHERE 子句:

      JOBCODE='VNURSE'
      

      不必在子句开头输入 WHERE。

    3. 个别用户的行子集字段中,可输入类似于 SQL WHERE 子句的子句,以进一步限制个别用户可以看到的行。确保不要在子句开头输入“WHERE”。可以使用参数,它的值随用户的不同而有所不同。有关在组级别或用户级别定义过滤器的详细信息,请参阅在预订级别过滤数据

      例如,假定您想要用户只能看到与其自己的职位代码相关的数据。定义用来引用对每个个别用户定义的数据过滤器值的变量,而不是对整个预订的 JOBCODE 参数的值进行硬编码:

      JOBCODE=':JOB'
      

      在个别用户的数据过滤器中,您可将 :JOB 参数设置为每个用户的职位代码。有关对个别用户过滤数据的更多信息,请参阅过滤对用户可用的数据在预订级别过滤数据

    4. 单击确定以关闭“高级预订定义”窗口。
  5. 单击确定返回“定义复制预订”窗口。

注意:
在同步期间对用户设备上的 DB2 Everyplace 表中的一行所作的一系列更改会作为一个累积更改通知到 Sync Server。因此,对同一主键所作的 DELETE 操作以及接下来的 INSERT 操作会作为一个 UPDATE 操作传递至 Sync Server(如果执行这两个操作之间未进行同步的话)。如果在进行这两个操作时插入了同步, 则这两个操作所作的更改会分别通知到 Sync Server。由于预订不在源表与用户表之间传送所有列,因此,对单一行执行一系列更改会导致不一致性。UPDATE 操作会保留未预订的列中的当前值,而 INSERT 操作会将未预订的列设置为缺省值。

相关概念

相关任务