Hi,
eine wahrscheinlich einfache Frage, doch als Oracle Einsteiger hab ich's noch nich hingekriegt:
ich habe eine view erstellt, die soweit funktioniert und daten anzeigt, bis auf folgende fehlermeldung: "ORA-01445: Kann keine ROWID aus einer Join-View ohne Basistabelle (der View) auswählen oder erfassen".
Wenn ich es richtig verstehe, bedeutet das, dass die View keinen eindeutigen PK hat und damit die Tupel nicht eindeutig identifiziert werden können.
Also hab ich fix nen PK-Constraint hinzugefügt, der auch fehlerlos erstellt wurde. Trotzdem bekomme ich die gleiche Fehlermeldung. Woran könnt's liegen?
Code zum Generieren der View:
Code zum PK-Constraint:
Noch 2 Einsteigerfragen:
1) "Buchungsnummer" ist PK in der Ausgangstabelle "Buchungen". Übernimmt Oracle beim Erstellen der View diesen nicht automatisch als PK?
2) Kann man Views Spalten hinzufügen (bspw.: alter view add column xyz?) Wollte eine Spalte mit Berechnungsergebnissen anfügen... Was wäre hier die eleganteste Methode?
Tausend Dank für Tips und Anregungen!
schneubel
PS: DBMS = Oracle 10g
eine wahrscheinlich einfache Frage, doch als Oracle Einsteiger hab ich's noch nich hingekriegt:
ich habe eine view erstellt, die soweit funktioniert und daten anzeigt, bis auf folgende fehlermeldung: "ORA-01445: Kann keine ROWID aus einer Join-View ohne Basistabelle (der View) auswählen oder erfassen".
Wenn ich es richtig verstehe, bedeutet das, dass die View keinen eindeutigen PK hat und damit die Tupel nicht eindeutig identifiziert werden können.
Also hab ich fix nen PK-Constraint hinzugefügt, der auch fehlerlos erstellt wurde. Trotzdem bekomme ich die gleiche Fehlermeldung. Woran könnt's liegen?
Code zum Generieren der View:
CREATE OR REPLACE VIEW teilnehmerlisten AS
SELECT semV.veranstaltungsnummer, b.buchungsnummer, b.personennummer, semV.seminarkurztitel, st.seminartitel , k.anrede, k.vorname, k.nachname, k.firmenkurzname Firma, semv.raumnr
from ((buchung b inner join seminarveranstaltung semV On b.veranstaltungsnummer = semV.veranstaltungsnummer ) inner join kunde k on b.personennummer = k.personennummer)
LEFT OUTER JOIN seminartyp st on semv.seminarkurztitel = st.seminarkurztitel order by veranstaltungsnummer;
SELECT semV.veranstaltungsnummer, b.buchungsnummer, b.personennummer, semV.seminarkurztitel, st.seminartitel , k.anrede, k.vorname, k.nachname, k.firmenkurzname Firma, semv.raumnr
from ((buchung b inner join seminarveranstaltung semV On b.veranstaltungsnummer = semV.veranstaltungsnummer ) inner join kunde k on b.personennummer = k.personennummer)
LEFT OUTER JOIN seminartyp st on semv.seminarkurztitel = st.seminarkurztitel order by veranstaltungsnummer;
Code zum PK-Constraint:
alter view teilnehmerlisten
add constraint teilnehmerlisten_pk
primary key (buchungsnummer)
disable novalidate;
add constraint teilnehmerlisten_pk
primary key (buchungsnummer)
disable novalidate;
Noch 2 Einsteigerfragen:
1) "Buchungsnummer" ist PK in der Ausgangstabelle "Buchungen". Übernimmt Oracle beim Erstellen der View diesen nicht automatisch als PK?
2) Kann man Views Spalten hinzufügen (bspw.: alter view add column xyz?) Wollte eine Spalte mit Berechnungsergebnissen anfügen... Was wäre hier die eleganteste Methode?
Tausend Dank für Tips und Anregungen!
schneubel
PS: DBMS = Oracle 10g