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 教程 » 教程:将 MobiLink 用于 Oracle 10g 数据库

 

第 3 课:添加唯一主键

本课假定您已完成前面的所有课程。 请参见第 1 课:设计模式

在同步系统中,表的主键是在不同数据库中唯一地标识行的唯一方式,也是检测冲突的唯一方式。正在协调的每一个表都必须具有一个主键。切勿对主键进行更新。还需要确保已插入到一个数据库中的主键值不被插入到另一数据库。

可通过多种方法来生成唯一主键。为简便起见,本教程使用了复合主键方法。此方法创建多个列的主键,这些主键在统一数据库和远程数据库中都是唯一的。

 ♦ 向统一数据库添加唯一主键
  1. 在命令提示符处,运行以下命令:

    sqlplus SYS/your password for sys as SYSDBA
  2. 添加到 SALES_REP_ID 中的值必须存在于 HR.EMPLOYEES 表中。ORDERS_SALES_REP_FK 外键实施此规则。执行以下语句以删除外键:

    ALTER TABLE OE.ORDERS 
    DROP CONSTRAINT ORDERS_SALES_REP_FK;
  3. SALES_REP_ID 列不能添加为主键,因为它包含空值。对于本教程,用值 1 替换空值。执行以下语句:

    UPDATE OE.ORDERS
    SET SALES_REP_ID = 1
    WHERE SALES_REP_ID IS NULL;
  4. ORDER_ID 列是 ORDERS 表的当前主键。要删除当前主键,执行以下语句:

    ALTER TABLE OE.ORDERS 
    DROP PRIMARY KEY CASCADE;
  5. 组合主键由 SALES_REP_ID 列和 ORDER_ID 列组成。要添加组合主键,执行以下语句:

    ALTER TABLE OE.ORDERS
    ADD CONSTRAINT salesrep_order_pk PRIMARY KEY (sales_rep_id, order_id);

执行这些语句后,MobiLink 服务器将连接到统一数据库,并为任意数量的远程数据库设置同步。

在下一课中,将根据统一模式创建远程模式。这意味着远程模式和统一模式具有相同的主键。

列经过特别的选择,以确保对于所有数据库存在唯一主键。对于 ORDERS 表,主键由 SALES_REP_ID 和 ORDER_ID 列组成。任何插入到远程 sales 表的值都必须具有唯一的订单号(SALES_REP_ID 值始终不变)。这可确保每个远程 ORDERS 表的唯一性。统一 ORDERS 表中的主键防止多个销售人员上载数据时发生冲突。由于销售人员的 SALES_REP_ID 值不同,因而来自一个销售人员的每个上载对于另一个销售人员都是唯一的。

前进至第 4 课:通过 MobiLink 进行连接