Widoki w Oracle mogą być aktualizowalne w określonych warunkach. To może być trudne i zazwyczaj nie jest zalecane.
Z bazy danych Oracle 10g SQL:
Uwagi dotyczące widoków, które można aktualizować
Widok z możliwością aktualizacji to widok, którego można używać do wstawiania, aktualizowania lub usuwania wierszy tabeli podstawowej. Możesz utworzyć widok, który będzie z natury aktualizowany, lub możesz utworzyć wyzwalacz ZAMIAST w dowolnym widoku, aby można go było aktualizować.
Aby dowiedzieć się, czy i w jaki sposób można modyfikować kolumny widoku z natury aktualizowalnego, wykonaj zapytanie w widoku słownika danych USER_UPDATABLE_COLUMNS. Informacje wyświetlane przez ten widok mają znaczenie tylko w przypadku widoków, które można aktualizować z natury. Aby widok mógł być z natury aktualizowany, muszą być spełnione następujące warunki:
- Każda kolumna w widoku musi być odwzorowana na kolumnę pojedynczej tabeli. Na przykład, jeśli kolumna widoku mapuje się na wynik klauzuli TABLE (kolekcja niezagnieżdżona), widok nie jest z natury aktualizowany.
- Widok nie może zawierać żadnej z następujących konstrukcji:
- Operator zbioru
- DISTINCT operator
- Agregacja lub funkcja analityczna
- klauzula GROUP BY, ORDER BY, MODEL, CONNECT BY lub START WITH
- Wyrażenie kolekcji na liście SELECT
- Podzapytanie na liście WYBIERZ
- Podzapytanie oznaczone TYLKO DO ODCZYTU
- Połączenia, z pewnymi wyjątkami, zgodnie z dokumentacją w Przewodniku administratora bazy danych Oracle
Ponadto, jeśli z natury aktualizowany widok zawiera pseudokolumny lub wyrażenia, nie można aktualizować wierszy tabeli podstawowej za pomocą instrukcji UPDATE, która odwołuje się do którejkolwiek z tych pseudokolumn lub wyrażeń.
Jeśli chcesz, aby widok złączenia można było aktualizować, wszystkie poniższe warunki muszą być spełnione:
- Oświadczenie DML musi mieć wpływ tylko na jedną tabelę leżącą u podstaw połączenia.
- W przypadku instrukcji INSERT widok nie może być tworzony Z opcją CHECK, a wszystkie kolumny, do których wstawiane są wartości, muszą pochodzić z tabeli z zachowaniem klucza. Tabela z zachowaniem klucza to taka, dla której każdy klucz podstawowy lub unikalna wartość klucza w tabeli podstawowej jest również unikalna w widoku złączenia.
- W przypadku instrukcji UPDATE wszystkie zaktualizowane kolumny muszą zostać wyodrębnione z tabeli z zachowaniem klucza. Jeśli widok został utworzony Z OPCJĄ SPRAWDZANIA, połącz kolumny i kolumny pobrane z tabel, do których w widoku odwołuje się więcej niż jeden raz, należy chronić je przed AKTUALIZACJĄ.
- W przypadku instrukcji DELETE, jeśli połączenie daje w wyniku więcej niż jedną tabelę z zachowaniem klucza, baza danych Oracle usuwa z pierwszej tabeli wymienionej w klauzuli FROM, niezależnie od tego, czy widok został utworzony Z OPCJĄ CHECK.