本教程假定,您已安装订单输入 (OE) 示例数据库。有关安装示例模式的信息,可在 Oracle 文档中找到,也可在 http://www.oracle.com/technology/obe/obe1013jdev/common/OBEConnection.htm 在线查看。
OE 数据库需要更改才能与 MobiLink 一起使用。将删除一些列,因为这些列曾作为用户定义类型创建。可以将这些用户定义类型转换为 SQL Anywhere 识别的类型,但完成此任务与本教程无关。接着,必须授予 OE 用户创建触发器的权限,因为 MobiLink 需要使用 OE 的凭据创建几个触发器。
使用 Oracle SQL Plus 应用程序以具有 SYSDBA 权限的 SYS 用户身份进行连接。在命令提示符处,运行以下命令:
sqlplus SYS/your password for sys as SYSDBA |
要删除作为用户定义类型创建的列,运行以下命令:
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; |
解锁 OE 用户,并将口令设置为 sql。运行以下命令:
ALTER USER OE IDENTIFIED BY sql ACCOUNT UNLOCK; |
要允许 OE 用户创建触发器,运行以下命令:
GRANT CREATE ANY TRIGGER TO OE; |
要删除 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); |
在同步系统中,表的主键是在不同数据库中唯一地标识行的唯一方式,也是检测冲突的唯一方式。正在协调的每一个表都必须具有一个主键。切勿对主键进行更新。还需要确保已插入到一个数据库中的主键值不被插入到另一数据库。
可通过多种方法来生成唯一主键。为简便起见,本教程使用了复合主键方法。此方法使用多个在所有统一和远程数据库中唯一的列来生成主键。
使用 Oracle SQL Plus 应用程序以具有 SYSDBA 权限的 SYS 用户身份进行连接。在命令提示符处,运行以下命令:
sqlplus SYS/your password for sys as SYSDBA |
添加到 SALES_REP_ID 的值必须在 HR.EMPLOYEES 表中。ORDERS_SALES_REP_FK 外键实施此规则。为简单起见,通过运行以下命令删除此外键:
ALTER TABLE OE.ORDERS DROP CONSTRAINT ORDERS_SALES_REP_FK; |
SALES_REP_ID 列不能添加为主键,因为它包含空值。就本教程而言,用值 1 替换空值。运行以下命令:
UPDATE OE.ORDERS SET SALES_REP_ID = 1 WHERE SALES_REP_ID IS NULL; |
ORDER_ID 列是 ORDERS 表的当前主键。要删除当前主键,运行以下命令:
ALTER TABLE OE.ORDERS DROP PRIMARY KEY CASCADE; |
组合主键由 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 统一数据库。
有关生成唯一主键不同方式的详细信息,请参见维护唯一主键。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |