加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何实现跨数据库外键约束?

发布时间:2020-12-16 06:36:26 所属栏目:asp.Net 来源:网络整理
导读:假设我有两个模式:HR和Orders. [HR].Employees [Orders].Entries-------------- ----------------Id_Employee ---- EmployeeFullname Id_EntryBirthday Description Amount 正如您所看到的,我想要的是能够建立跨数据库的外键,但是当我使用数据库链接尝试这
假设我有两个模式:HR和Orders.

[HR].Employees         [Orders].Entries
--------------         ----------------
Id_Employee    ---->   Employee
Fullname               Id_Entry
Birthday               Description
                       Amount

正如您所看到的,我想要的是能够建立跨数据库的外键,但是当我使用数据库链接尝试这个时,我得到:

-- From [Orders]
ALTER TABLE Entries
    ADD CONSTRAINT FK_Entries_Employees FOREIGN KEY (Employee)
    REFERENCES Employees@HR;
COMMIT;

ORA-02021: DDL operations are not allowed on a remote database

有没有解决的办法?它是遗留数据库,因此我无法更改现有架构.

对于NHibernate人群:我会使用这种关系来映射NHibernate的域对象.

解决方法

一种选择是在[Orders]上创建Employees的物化视图,然后将其用作外键的父项.

当然,这有一些缺点.特别是,

– 如果不禁用外键,您将无法完全刷新物化视图,因此必须快速刷新.

– 在物化视图刷新之前,输入到EMPLOYEES的密钥将不可用于ENTRIES.如果这很关键,您可能希望将其设置为在提交时刷新.

其他替代方案是通过触发器或后清理过程自己处理密钥实施.或者说服DBA,这些模式可以驻留在同一个数据库实例上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读