web-dev-qa-db-ja.com

Oracleのビューを参照する外部キー

外部キーを使用してビューを参照しようとしていますが、次のエラーが発生します。

「エラー:ORA-02270:この列リストに一致する一意キーまたは主キーがありません」

ただし、このビューで主キーを作成し、TOADの[制約]タブで確認しました。

これは私が作成しようとしているテーブルです:

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は、別のスキーマの従業員テーブルを指す別のビューに基づくビューです。

17
echoblaze

ビューへの外部キーを作成する可能性に関係なく、実装するのは実際には最善のアイデアではありません。

データベースビューは、ユーザーが必要なデータを快適にクエリできるように設計されていますが、同時にセキュリティバリアとして機能し、テーブル、テーブル内のデータ制約、およびもちろんテーブルの相互参照を含むすべてのデータベース構造を隠蔽します。

したがって、他のスキームに存在しているにもかかわらず、新しいテーブルから既存のテーブルを参照することをお勧めします。

16
Kirill Leontev

別のスキーマをポイントしているため、実行できる最善の方法は、SOME_VIEWをマテリアライズドビューとして実装することです。次に、マテリアライズド・ビューを変更して主キーを追加し、前のキーからこのビューを参照することもできます。

これはあなたが読むべきドキュメントです: https://docs.Oracle.com/cd/A97630_01/server.920/a96567/repmview.htm

0
AMG