Insert mit View?
Ich wollte wissen, ob man bei View auch Insert anwenden kann. Ich habe mit join 2 Tabellen verknüpft und wollte fragen, ob man da bei View eine neue Zeile hinzufügen kann? Ich bekomme bei Ausführen den Fehler "SQL-Fehler: ORA-01776: Über eine Join-View kann nicht mehr als eine Basistabelle geändert werden" ?
1 Antwort
Bei Views handelt es sich um virtuelle Tabellen, die bei Aufruf/Anfrage von der Datenbankengine generiert werden. Daten können nur über sie eingefügt werden, wenn bestimmte Voraussetzungen erfüllt werden (jeder Spaltenname ist eindeutig und wird nicht dynamisch berechnet; alle Spalten der Basistabellen, die keinen Standardwert besitzen, werden abgebildet, existierende Klauseln bei aktivierten Check Options werden erfüllt, ...). Kurz gesagt: Es gibt einfache, änderbare Views und komplexe, unveränderliche.
Verschiedene Datenbankengines, wie MySQL/MariaDB oder MSSQL haben eine Spalte IS_UPDATABLE in der INFORMATION_SCHEMA.VIEWS-Tabelle, den du erst prüfen kannst. Sollte ein View allerdings auf mehreren anderen Views basieren, ist dieser nach Änderungen eines der zugrundeliegenden Views nicht immer korrekt.
Im Zweifel solltest du also die Basistabellen direkt ansprechen.