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

SQL Anywhere 11.0.1 (中文) » UltraLite - 数据库管理和参考 » UltraLite 用作 MobiLink 客户端 » UltraLite 客户端 » 设计 UltraLite 中的同步

 

UltraLite 中的表顺序

通过设置 [表顺序] 同步参数,可控制同步操作的顺序。如果要为同步指定表顺序,可按编程方式或在测试期间作为 ulsync 实用程序的一部分使用 [表顺序] 参数。[表顺序] 参数用于指定要上载的表的顺序。请参见Additional Parameters 同步参数

只有在 UltraLite 数据库出现以下情况时,才需要显式设置表顺序:

  • 有外键循环。然后必须列出循环中的所有表。

  • 所具有的外键关系与统一数据库中所使用的不同。

避免与外键循环相关的同步问题

对于使用外键循环的 UltraLite 数据库,表顺序特别重要。将一系列表链接在一起构成闭环时,就发生了循环。但是,如果统一数据库和 UltraLite 远程数据库之间的循环不同,情况会变得很复杂,所以不建议使用外键循环。

使用外键循环时,应对表进行排序,使主表的操作在相关外表的操作之前发生。[表顺序] 参数确保了外表中的插入操作满足其外键参照完整性均束条件(对于删除之类的其它操作也是如此)。

除了表排序之外,在提交操作之前检查参照完整性也可以避免同步问题。如果统一数据库是 SQL Anywhere 数据库,则可将其中一个外键设置为 check on commit。这确保在提交阶段(而非启动操作时)就检查外键参照完整性。例如:

CREATE TABLE c (
    id INTEGER NOT NULL PRIMARY KEY,
    c_pk INTEGER NOT NULL
);
CREATE TABLE p (
    pk INTEGER NOT NULL PRIMARY KEY,
    c_id INTEGER NOT NULL,
    FOREIGN KEY p_to_c (c_id) REFERENCES c(id)
);
ALTER TABLE c
   ADD FOREIGN KEY c_to_p (c_pk)
   REFERENCES p(pk)
   CHECK ON COMMIT;

如果统一数据库由其他数据库供应商提供,则查看并确定该数据库是否有类似的检查参照完整性的方法。如果有,则应实现此方法。否则,就必须重新设计表关系以消除所有外键循环。

另请参见