关系数据库中的表通常是通过外键引用进行关联的。因此,参照完整性约束确保了数据库保持一致。
只复制数据库的一部分时,必须确保复制的数据库仍然具有参照完整性。
最好避免未复制的引用表错误。您的远程数据库不应包含指向未复制表的外键。
例如,在统一数据库中,SalesOrders 表具有一个指向 Employees 表的外键。SalesOrders.SalesRepresentative 是引用主键 Employees.EmployeeID 的外键。
创建了一个排除 Employees 表、但包括整个 SalesOrder 表的发布:PubSales。
CREATE PUBLICATION PubSales ( TABLE Customers, TABLE SalesOrders, TABLE SalesOrderItems, ); |
某远程用户 Rep1 预订了 PubSales 发布。然后,您从统一数据库中抽取 Rep1 并尝试为 Rep1 创建一个数据库。但是,数据库创建失败,因为 Rep1 缺失 Employees 表。要避免出现此问题,您可以:
删除外键引用 要排除外键引用,请在使用抽取实用程序 (dbxtract) 时指定 -xf 选项。
但是,如果从远程数据库中删除外键引用,远程数据库中将没有任何约束可以防止将无效的值插入到 SalesOrders 表的 SalesRepresentative 列。
如果远程数据库的 SalesRepresentative 列中插入了无效的值,复制的 INSERT 语句将在统一数据库上失败。
在发布中包含缺失的表 在发布中包含 Employees 表(或至少包含其主键)。例如:
CREATE PUBLICATION PubSales ( TABLE Customers, TABLE SalesOrders, TABLE SalesOrderItems, TABLE Products, TABLE Employees ); |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |