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

SQL Anywhere 11.0.1 (中文) » SQL Remote » SQL Remote 复制设计 » SQL Remote 复制设计和设置

 

重复主键错误

当所有用户都连接到同一数据库时,确保每个 INSERT 语句都使用唯一主键是没有问题的。如果某用户尝试重用某个主键,则 INSERT 语句会失败。

复制系统中的情况与此不同,因为用户与多个数据库相连接。当连接到不同远程数据库的两个用户插入使用相同主键值的行时,就会出现潜在的问题。他们的语句都会各自成功,因为主键值在每个远程数据库中是唯一的。

但是,当这两个用户通过相同的统一数据库复制他们自己的数据库时,就会出现问题。第一个要通过统一数据库复制的数据库会成功。但第二个要到达复制系统中给定数据库的插入操作将会失败。

主键值必须是唯一的

要避免主键错误,必须确保在数据库插入某行时,该行的主键在系统的所有数据库中是唯一的。有多种方法可以实现此目标,包括:

  1. 使用 SQL Anywhere 数据库的缺省全局自动增量功能。请参见全局自动增量列

  2. 使用主键池在每个站点维护一个未使用的唯一主键值的列表。请参见使用主键池

可以单独使用上述方法,也可以同时使用上述方法来避免出现重复主键。

另请参见

全局自动增量列
使用主键池