代码之家  ›  专栏  ›  技术社区  ›  echoblaze

在Oracle中引用视图的外键

  •  16
  • echoblaze  · 技术社区  · 15 年前

    我正试图用一个外键引用一个视图,但我得到了这个错误:

    “错误: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)
    );
    

    有些视图是基于另一个视图的视图,该视图指向另一个架构中的Employee表。

    3 回复  |  直到 7 年前
        1
  •  14
  •   Kirill Leontev    15 年前

    不管创建视图的外键的可能性如何,它确实不是最佳的实现方法。

    数据库视图的设计是为了让用户能够轻松地查询一些他需要的数据,但同时又起到安全屏障的作用,以隐藏所有数据库结构,包括表、表中的数据约束,以及表交叉引用。

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

        2
  •  0
  •   AMG    7 年前

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

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

        3
  •  -2
  •   igelkott    15 年前

    反对观点的外键可能是导致问题的原因。