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

SQL Anywhere 11.0.1 (中文) » MobiLink - 入门 » MobiLink 教程 » 教程:将 MobiLink 用于 Oracle 10g 统一数据库

 

第 2 课:准备统一数据库

本教程假定,您已安装订单输入 (OE) 示例数据库。有关安装示例模式的信息,可在 Oracle 文档中找到,也可在 [external link] http://www.oracle.com/technology/obe/obe1013jdev/common/OBEConnection.htm 在线查看。

OE 数据库需要更改才能与 MobiLink 一起使用。将删除一些列,因为这些列曾作为用户定义类型创建。可以将这些用户定义类型转换为 SQL Anywhere 识别的类型,但完成此任务与本教程无关。接着,必须授予 OE 用户创建触发器的权限,因为 MobiLink 需要使用 OE 的凭据创建几个触发器。

♦  准备统一数据库
  1. 使用 Oracle SQL Plus 应用程序以具有 SYSDBA 权限的 SYS 用户身份进行连接。在命令提示符处,运行以下命令:

    sqlplus SYS/your password for sys as SYSDBA
  2. 要删除作为用户定义类型创建的列,运行以下命令:

    ALTER TABLE OE.CUSTOMERS DROP COLUMN CUST_ADDRESS;
    ALTER TABLE OE.CUSTOMERS DROP COLUMN PHONE_NUMBERS;
    ALTER TABLE OE.CUSTOMERS DROP COLUMN CUST_GEO_LOCATION;
    ALTER TABLE OE.PRODUCT_INFORMATION DROP COLUMN WARRANTY_PERIOD;
  3. 解锁 OE 用户,并将口令设置为 sql。运行以下命令:

    ALTER USER OE IDENTIFIED BY sql ACCOUNT UNLOCK;
  4. 要允许 OE 用户创建触发器,运行以下命令:

    GRANT CREATE ANY TRIGGER TO OE;
  5. 要删除 orders_customer 外键和创建引用 customers 表中的 customer_id 的新外键,运行以下命令:

    ALTER TABLE OE.ORDERS DROP CONSTRAINT ORDERS_CUSTOMER_ID_FK;
    ALTER TABLE OE.ORDERS ADD CONSTRAINT ORDERS_CUSTOMER_ID_FK
      FOREIGN KEY (CUSTOMER_ID) REFERENCES OE.CUSTOMERS (CUSTOMER_ID);
添加唯一主键

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

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

♦  向统一数据库添加唯一主键
  1. 使用 Oracle SQL Plus 应用程序以具有 SYSDBA 权限的 SYS 用户身份进行连接。在命令提示符处,运行以下命令:

    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 服务器将顺利地连接到统一数据库,并将其设置为可与任意数量的远程表进行同步。

添加外键
所有数据库中的唯一主键

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

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

进一步阅读

有关兼容 RDBMS 的详细信息,请参见统一数据库简介

有关将 Oracle 设置为统一数据库的详细信息,请参见Oracle 统一数据库

有关生成唯一主键不同方式的详细信息,请参见维护唯一主键