Foreign-key-Referenz auf ein view in Oracle
Ich versuche, zum Verweis auf eine Ansicht mit einer foreign key, aber ich bin immer diese Fehlermeldung:
"Fehler: ORA-02270: keine passende unique-oder primary key-Spalte-Liste"
Allerdings habe ich einen primary key auf diese Ansicht, und überprüft, dass es in der Registerkarte Einschränkungen in KRÖTE.
Dies ist die Tabelle, die ich bin versucht zu erstellen:
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 ist eine Ansicht nach einer anderen Ansicht, die Punkte auf der employee-Tabelle in einem anderen schema.
Ich nehme an, Sie wollen/brauchen dies, um einen einzigen Fremdschlüssel, könnte aus mehreren Tabellen, da eine Spalte kann mehrere foreign key-Einschränkungen gegen eine einzelne Spalte... aber der Wert in der Spalte vorhanden sein, in all den fremden constraint verknüpften Tabellen. Ich hoffe, das ist ein Mittel, die Umstellung der Datenbank, und nur vorübergehend.
In anderen Worten, SOME_VIEW, OTHER_VIEW und BASE_TABLE alle müssen die gleichen Werte haben, um für diese foreign key-Einschränkung zu arbeiten?
Verwandte, obwohl alt (2006): thinkoracle.blogspot.com/2006/11/view-constraints.html
Wenn Sie zum hinzufügen von außen-Zwänge auf OTHER_VIEW sowohl SOME_VIEW und BASE_TABLE (move Namen um, wie Sie möchten), ja.
Ponys: ich glaube nicht, dass die Rechte auf die Tabellen Mitarbeiter (das war der Punkt, der mit der Sicht); ich habe Ihren link und anscheinend materialisierten sichten könnte die Lösung sein - weißt du etwas darüber? Ich werde mehr darüber Lesen Sie in der Zwischenzeit
In anderen Worten, SOME_VIEW, OTHER_VIEW und BASE_TABLE alle müssen die gleichen Werte haben, um für diese foreign key-Einschränkung zu arbeiten?
Verwandte, obwohl alt (2006): thinkoracle.blogspot.com/2006/11/view-constraints.html
Wenn Sie zum hinzufügen von außen-Zwänge auf OTHER_VIEW sowohl SOME_VIEW und BASE_TABLE (move Namen um, wie Sie möchten), ja.
Ponys: ich glaube nicht, dass die Rechte auf die Tabellen Mitarbeiter (das war der Punkt, der mit der Sicht); ich habe Ihren link und anscheinend materialisierten sichten könnte die Lösung sein - weißt du etwas darüber? Ich werde mehr darüber Lesen Sie in der Zwischenzeit
InformationsquelleAutor echoblaze | 2010-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unabhängig von der Möglichkeit, fremde Schlüssel, Ansichten, es ist in der Tat nicht die beste Idee umzusetzen.
Datenbank-views wurden entworfen, um Benutzer bequem Abfrage einige Daten, die er braucht, aber zur gleichen Zeit dienen als Sicherheits-Barriere, zu verbergen, alle Struktur einer Datenbank, einschließlich Tabellen, Daten-Integritätsregeln in Tabellen, und, ja, auch Tabelle Querverweise.
So, eine gute Praxis für mich wäre die Referenz eine vorhandene Tabelle aus einer neuen, trotz seines Wohnsitzes im anderen Schema.
okay, danke für das feedback. wir haben beschlossen, zu tun, schließt sich auf der application-Ebene statt auf der Datenbank-Ebene
Es gibt einen so genannten role-playing-Ansichten in der dimensionalen DWH-Modellierung. In diesem Fall ist eine solche Art von foreign key-Einschränkungen scheint es eine gute Praxis, wie auch immer.
Ich bin mir nicht so sicher, kann ich voll und ganz Zustimmen. Stellen Sie sich ein Abteilungen-Tabelle, die Datensätze, die alle eine chief Spalte. Als eine chief verantwortlich sein kann für mehrere Abteilungen, würde ich erstellt eine weitere Tabelle, Häuptlinge. Als Mitarbeiter sind das wahrscheinlich eine Trennung Datum würde ich dann hinzufügen entrydate und separationdate Spalten Häuptlinge-Tabelle und finden Sie den Abteilung, A,B und C an den chief #2 das gilt jetzt. Dies würde erfordern, Datensätze filtern, die ich erreichen kann in einer Ansicht wie currentchiefs ich würde es Haken bis zu Abteilungen statt der Quell-Tabelle Häuptlinge.
InformationsquelleAutor be here now
Die besten Sie tun können, ist zu implementieren SOME_VIEW wie eine Materialisierte Ansicht, denn Sie zeigen ein anderes schema.
Dann können Sie ändern Sie die materialisierte Ansicht zu fügen Sie einen Primärschlüssel und sogar beziehen sich auf diese Ansicht von einem foreing-Schlüssel.
Dies ist die Dokumentation, die Sie Lesen sollten:
https://docs.oracle.com/cd/A97630_01/server.920/a96567/repmview.htm
InformationsquelleAutor AMG
Den Fremdschlüssel gegen eine Ansicht ist wahrscheinlich das, was Schwierigkeiten verursacht.
Siehe bytes.com/topic/oracle/answers/64610-create-primary-key-view
InformationsquelleAutor igelkott