oracle - erstellen Sie eine Ansicht mit einem Primärschlüssel
Diese Frage ist ein Duplikat in der Bedeutung ich habe noch, es zu klären. Oracle-Dokumentation speziell sagt, dass es möglich ist, geben Sie einen primären Schlüssel in CREATE VIEW
- Klausel(11g docs den gleichen Begriff) . Doch wenn ich versuche, es zu tun mögen dieses:
create or replace view ABC(A, B, C, CONSTRAINT A_PK PRIMARY KEY (A)) ....
Bekomme ich ORA-00922: missing or invalid option
Hinweis auf "primary key" - Satz. Die Frage ist, ist es mir oder ist es etwas falsch mit der Oracle-Dokumentation?
InformationsquelleAutor Andrey Balaguta | 2012-02-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einfache Antwort ist, dass deine syntax falsch ist. Sie muss angeben
DISABLE
.NOVALIDATE
deaktiviert die überprüfung der primären Schlüssel, die in einer Ansicht dies ist die Standardeinstellung und damit automatisch eingeschlossen; aber es ist viel klarer, wenn Sie es verwenden, als eine schöne doppelte Verneinung,disable novalidate
deaktiviert die Fähigkeit, deaktivieren Sie die Primärschlüssel.Den
rely
ist optional; es gibt an, ob die Berücksichtigung der Primärschlüssel bei der Erstellung der Ansicht. Das antonym vonrely
istnorely
.Gibt es eine Menge von Einschränkungen auf erstellen einer Ansicht Einschränkung und als Sie sich auf die Tabelle ist es echt nicht Wert es-wie bereits erwähnt-durch @RC. Aber wenn Sie es brauchen für die Dokumentation nur dann hier gehen Sie:
Aus der Dokumentation:
InformationsquelleAutor Ben
Haben Sie zu erstellen, wird die Einschränkung deaktiviert. Es ist wirklich eine Möglichkeit zu geben, einen Hinweis auf den optimizer beeinflussen die Abfrage-plan.
Daten-Integrität wird erzwungen, die an der zugrunde liegenden Tabelle. Wenn Sie daran denken, die Durchsetzung einer primary key-Einschränkung in der view-Ebene nicht machen eine ganze Menge Sinn. Ein plain-ole view speichert keine Daten, es ist nur eine "Ansicht" von Daten, die von anderen Tabellen. Wenn eine primary key-Einschränkung nur auf einen Blick auf einige der zugrunde liegenden Tabelle und die Tabelle erzwingt nicht die Einschränkung selbst, wie würden Sie die Ansicht mit der situation umgehen, wo jemand aktualisiert, die Tabelle direkt mit den Daten, die bricht, ist es Zwang? (d.h. die Tabelle hat keine Ahnung, welche Einschränkungen auf Sie gelegt, die über einen view)
InformationsquelleAutor RC.