外键引用Oracle中的视图

时间:2010-09-30 17:21:56

标签: 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)
);

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

3 个答案:

答案 0 :(得分:14)

无论为视图创建外键的可能性,实际上都不是最好的想法。

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

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

答案 1 :(得分:0)

最好的办法是将SOME_VIEW实现为实例化视图,因为您要指向另一个模式。 然后,您可以更改实例化视图以添加主键,甚至可以从前导键引用该视图。

这是您应该阅读的文档: https://docs.oracle.com/cd/A97630_01/server.920/a96567/repmview.htm

答案 2 :(得分:-2)

反对视图的外键可能是造成麻烦的原因。