我们有2个数据库-DB1和DB2。

我可以在DB1中创建与DB2中的表具有关系的表吗?换句话说,我的表中可以从另一个数据库中有一个外键吗?

我与不同用户连接到这些数据库。有任何想法吗?

现在,我收到错误:

ORA-00942:不存在表或视图

有帮助吗?

解决方案

不,Oracle不允许您创建通过数据库链接引用表的外键约束。您将不得不使用触发器来执行完整性。

其他提示

解决此问题的一种方法是创建本地数据库中主表的实质性视图,然后创建指向MV的完整性约束。

这样可行。但这可能导致一些问题。首先,如果您需要完全刷新实体视图,则需要在执行之前禁用约束。否则,Oracle将在引入新行之前删除MV中的行。

其次,您可能会遇到一些时机延迟。例如,说您将记录添加到远程站点上的主表中。然后,您想将子记录添加到本地表格。但是MV将每天刷新,但尚未发生。您将受到外国钥匙的违规行为,仅仅是因为MV尚未刷新。

如果您走这条路线,您最安全的方法是将MV设置为快速刷新主表的提交。这意味着几乎一直保持DB链接。如果您需要进行完整的刷新,您将要做管理工作。

总而言之,我们通常发现触发器更容易。在某些情况下,我们只是在逻辑模型中简单地定义了FK,但通过设置每日工作来手动实施它,该工作将检查违规和警报员工。当然,我们非常小心,因此这些警报极为罕见。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top