外键引用Oracle中的视图

ech*_*aze 17 sql oracle views foreign-keys

我试图用外键引用一个视图,但我收到此错误:

"错误:ORA-02270:此列列表没有匹配的唯一键或主键"

但是,我在此视图上创建了一个主键,并在TOAD的Constraints选项卡中对其进行了验证.

这是我试图创建的表:

CREATE TABLE QUESTION
(   
    QUESTION_ID             INTEGER not null,
    CREATED_USER_ID         INTEGER not null,    
    CONSTRAINT PK_QUESTION  PRIMARY KEY (QUESTION_ID),
    CONSTRAINT FK_USER
        FOREIGN KEY (CREATED_USER_ID)
        REFERENCES SOME_VIEW(VIEW_ID)
);
Run Code Online (Sandbox Code Playgroud)

SOME_VIEW是基于另一个视图的视图,该视图指向另一个模式中的employee表.

Kir*_*tev 16

无论为视图创建外键的可能性,实际上都不是最佳实现.

数据库视图旨在让用户轻松查询他需要的一些数据,但同时充当安全屏障,隐藏所有数据库结构,包括表,表中的数据约束,以及表格交叉引用.

因此,对我来说,一个好的做法就是从你的新桌子中引用现有的桌子,尽管它在其他方案中居住.

  • 我不确定我是否完全同意。想象一个_Departments_表包含所有都有_chief_列的记录。由于一个_chief_可以负责多个_departments_,因此我将创建另一个表_Chiefs_。由于员工可能有离职日期,因此我将_entrydate_和_separationdate_列添加到_chiefs_表中,并将_department_ A,B和C引用到现在有效的_chief_#2 **。这将需要行过滤,这可以在_currentchiefs_之类的视图中实现,我可以连接到_departments_而不是源表_chiefs_。 (2认同)