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

SQL Anywhere 12.0.1 » MobiLink - 服务器管理 » MobiLink 服务器技术 » 同步技术 » 唯一主键

 

主键池

解决此唯一主键问题的一个有效方法是为数据库的每个用户指派一个可在需要时使用的主键值池。例如,您可以为每个销售代表指派 100 个新标识值。这样,每个销售代表就可以为新客户任意指派自己池中的值。

 ♦ 实现主键池
  1. 在统一数据库和每个远程数据库中添加一个新表来保存新的主键池。除了用于在统一数据库中保存唯一值的列,这些表中还应包含一个用户名列,以标识哪些用户已被授予指派该值的权限。

  2. 在统一数据库中,编写存储过程以确保为每个用户都指派了足够多的新标识值。为那些插入许多新条目或不经常执行同步的远程用户指派更多的新值。

  3. 编写 download_cursor 脚本,以选择指派给每个用户的新值,并将它们下载到远程数据库中。 请参见实现基于时间戳的下载

  4. 修改将使用远程数据库的应用程序,以便在用户插入新行时应用程序使用池中的其中一个值。然后,应用程序必须从池中删除该值,以确保不会再次使用它。

  5. 编写 upload_delete 脚本以上载删除的键。然后,MobiLink 服务器从统一值池中删除那些用户已从远程数据库中自己的值池中删除的行。

  6. 编写 end_upload 脚本以调用用来维护值池的存储过程。这样做将向用户的池中添加更多的值以代替在上载过程中删除的值。

 示例