本课假定您已完成前面的所有课程。 请参见第 1 课:设计模式。
在同步系统中,表的主键是在不同数据库中唯一地标识行的唯一方式,也是检测冲突的唯一方式。正在协调的每一个表都必须具有一个主键。切勿对主键进行更新。还需要确保已插入到一个数据库中的主键值不被插入到另一数据库。
可通过多种方法来生成唯一主键。为简便起见,本教程使用了复合主键方法。此方法创建多个列的主键,这些主键在统一数据库和远程数据库中都是唯一的。
在命令提示符处,运行以下命令:
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 服务器将连接到统一数据库,并为任意数量的远程数据库设置同步。
在下一课中,将根据统一模式创建远程模式。这意味着远程模式和统一模式具有相同的主键。
列经过特别的选择,以确保对于所有数据库存在唯一主键。对于 ORDERS 表,主键由 SALES_REP_ID 和 ORDER_ID 列组成。任何插入到远程 sales 表的值都必须具有唯一的订单号(SALES_REP_ID 值始终不变)。这可确保每个远程 ORDERS 表的唯一性。统一 ORDERS 表中的主键防止多个销售人员上载数据时发生冲突。由于销售人员的 SALES_REP_ID 值不同,因而来自一个销售人员的每个上载对于另一个销售人员都是唯一的。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |