2010-09-30 52 views
10

Tôi đang cố gắng để tham khảo một cái nhìn với một chìa khóa nước ngoài nhưng tôi nhận được lỗi này:chìa khóa ngoại tham khảo một cái nhìn trong Oracle

"Lỗi: ORA-02.270: không phù hợp duy nhất hoặc chính quan trọng cho column- này danh sách "

Tuy nhiên, tôi đã tạo khóa chính trên chế độ xem này và đã xác minh nó trong tab Ràng buộc trong TOAD.

Đây là bảng Tôi đang cố gắng để tạo ra:

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 là một cái nhìn dựa trên một quan điểm mà chỉ vào bảng nhân viên trong schema khác.

+1

Tôi thu thập bạn muốn/cần điều này để có một khóa ngoại có thể từ nhiều bảng, vì cột có thể có nhiều ràng buộc khóa ngoài đối với một cột ... nhưng giá trị trong cột sẽ phải tồn tại trong tất cả các bảng liên quan đến ràng buộc nước ngoài. Tôi hy vọng đây là một phương tiện để chuyển đổi cơ sở dữ liệu, và chỉ tạm thời. –

+0

Nói cách khác, SOME_VIEW, OTHER_VIEW và BASE_TABLE tất cả sẽ phải có cùng giá trị để ràng buộc khoá ngoại này hoạt động? – echoblaze

+1

Liên quan, mặc dù cũ (2006): http://thinkoracle.blogspot.com/2006/11/view-constraints.html –

Trả lời

11

Bất kể khả năng tạo khóa ngoài cho lượt xem, đó thực sự không phải là ý tưởng hay nhất để triển khai.

Chế độ xem cơ sở dữ liệu được thiết kế để cho phép người dùng thoải mái truy vấn một số dữ liệu mà ông cần, đồng thời để làm rào cản bảo mật, che giấu tất cả cấu trúc cơ sở dữ liệu, bao gồm bảng, ràng buộc dữ liệu trong bảng và tham chiếu chéo.

Vì vậy, một thực hành tốt với tôi sẽ là tham khảo bảng hiện có từ bảng mới của bạn, bất chấp nơi cư trú của nó trong sơ đồ khác.

+0

+1: Suy nghĩ của tôi chính xác và bài viết tôi thích trước đó. –

+0

được, cảm ơn tất cả các phản hồi. chúng tôi đã quyết định tham gia vào cấp ứng dụng chứ không phải cấp cơ sở dữ liệu – echoblaze

+0

Có một cái gì đó được gọi là khung nhìn đóng vai trong mô hình DWH chiều. Trong trường hợp đó, những hạn chế về khoá ngoại như vậy dường như là một thực hành tốt. –

-2

Khóa ngoại quốc chống lại chế độ xem có thể là nguyên nhân gây ra sự cố.

+1

Không thể có khóa ngoại quốc chống lại chế độ xem? – echoblaze

+0

Xem http://bytes.com/topic/oracle/answers/64610-create-primary-key-view – igelkott

Các vấn đề liên quan