Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Aktualisieren einer Join-Ansicht, ohne dass ein Non-Key-Preserved-Fehler angezeigt wird

Sie können column_from_table2 nicht aktualisieren in dieser Ansicht ist sie nicht aktualisierbar.
Um zu prüfen, ob eine Spalte aktualisierbar ist oder nicht, führen Sie diese Abfrage aus:

SELECT * FROM USER_UPDATABLE_COLUMNS
WHERE table_name = 'MY_DATAVIEW';

OWNER                          TABLE_NAME                     COLUMN_NAME                    UPDATABLE INSERTABLE DELETABLE
------------------------------ ------------------------------ ------------------------------ --------- ---------- ---------
TEST                           MY_DATAVIEW                    KEY1                           YES       YES        YES       
TEST                           MY_DATAVIEW                    KEY2                           YES       YES        YES       
TEST                           MY_DATAVIEW                    COLUMN_FROM_TABLE1             YES       YES        YES       
TEST                           MY_DATAVIEW                    COLUMN_FROM_TABLE2             NO        NO         NO   

Warum ist es nicht aktualisierbar? Das ist eine große Frage.
Es gibt ein ganzes Kapitel in der Dokumentation zu diesem Thema:
http://docs.oracle.com/cd/B28359_01/server.111/b28310/views001.htm#i1006234
finden Sie unter "Aktualisieren von Ansichten, die äußere Verknüpfungen beinhalten", ein Beispiel für eine Ansicht mit äußerer Verknüpfung und eine detaillierte Erklärung, welche Spalten in dieser Ansicht aktualisiert werden können und welche nicht und warum.