Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Widok tylko do odczytu

Termin Definicja
Widok tylko do odczytu

Widok tylko do odczytu nie pozwala modyfikować danych leżącej pod nim tabeli przez samo zapytanie SELECT.

Widok jako logiczna warstwa nad tabelą

Widok tylko do odczytu jest zapisaną definicją zapytania, która udostępnia wynik pod własną nazwą, bez tworzenia odrębnej kopii wszystkich danych. Gdy aplikacja wykonuje zapytanie SELECT na widoku, silnik bazy danych odczytuje dane zgodnie z jego definicją i zwraca zestaw wierszy oraz kolumn. Widok może ograniczać liczbę zwracanych kolumn, wybierać tylko wiersze spełniające warunek WHERE, łączyć informacje z kilku tabel albo zmieniać nazwy kolumn za pomocą aliasów.

Określenie „tylko do odczytu” oznacza, że przez ten widok nie można wykonać operacji modyfikującej dane źródłowe. Próba użycia instrukcji INSERT, UPDATE lub DELETE na takim obiekcie powinna zostać odrzucona przez silnik albo przez warstwę dostępu, która udostępnia widok. Sam widok nie przechowuje zwykle niezależnego, aktualnego zestawu danych; jego wynik jest obliczany na podstawie tabel i innych obiektów wskazanych w definicji.

Dlaczego zapytanie SELECT nie zmienia tabeli

Instrukcja SELECT służy do pobierania danych. Może zawierać projekcję kolumn, filtrowanie, sortowanie, grupowanie, funkcje agregujące oraz połączenia między tabelami, ale jej podstawowym działaniem jest zwrócenie wyniku dla klienta. Odczyt przez widok nie zmienia wartości przechowywanych w tabeli, nawet jeżeli wynik jest prezentowany w innej kolejności, zawiera obliczoną kolumnę albo pokazuje tylko część rekordów.

Nie należy jednak utożsamiać każdego widoku z widokiem wyłącznie do odczytu. W wielu systemach prosty widok oparty na jednej tabeli może być modyfikowalny, jeżeli jego definicja pozwala jednoznacznie wskazać rekordy i kolumny tabeli bazowej. Właściwości takie jak JOIN, DISTINCT, grupowanie, funkcje agregujące, wyrażenia obliczeniowe lub złożone podzapytania mogą uniemożliwić bezpośrednią aktualizację. Widok jawnie przeznaczony do odczytu usuwa tę niejednoznaczność na poziomie jego przeznaczenia i reguł dostępu.

Filtrowanie, połączenia i ograniczenie możliwości zapisu

Widok tylko do odczytu może pełnić funkcję bezpiecznej projekcji danych. Przykładowo definicja może zwracać wyłącznie identyfikator urządzenia, model oraz status naprawy, pomijając kolumny techniczne, które nie są potrzebne konkretnej aplikacji. Warunek WHERE status = 'aktywny' ogranicza wynik do wybranych rekordów, lecz nie tworzy osobnej tabeli i nie powoduje usunięcia pozostałych wierszy z tabeli źródłowej.

Wynik widoku może również powstawać z kilku tabel połączonych klauzulą JOIN. W takiej sytuacji jeden wiersz wyniku nie zawsze odpowiada jednemu wierszowi konkretnej tabeli, dlatego automatyczne określenie, który rekord należy zmienić, może być niemożliwe. Podobny problem występuje przy sumowaniu wartości, liczeniu rekordów lub grupowaniu danych. Z tego powodu widok raportowy jest typowo używany do odczytu, a zmiany wykonuje się przez kontrolowane instrukcje kierowane bezpośrednio do tabel albo przez procedury i operacje aplikacji przewidziane przez administratora bazy.

Kontrola dostępu i diagnostyka działania widoku

Widok tylko do odczytu może ograniczać nie tylko sposób prezentacji danych, lecz także zakres operacji dostępnych dla użytkownika bazy. Uprawnienie do odczytu widoku nie musi oznaczać uprawnienia do bezpośredniego odczytu wszystkich tabel użytych w jego definicji. Dokładne zasady sprawdzania uprawnień zależą od silnika bazy danych i konfiguracji schematów, dlatego przy problemie z dostępem trzeba sprawdzić właściciela obiektu, uprawnienia do wykonania zapytania oraz stan tabel i zależności, na których widok się opiera.

Podczas diagnostyki należy najpierw odczytać definicję widoku, a następnie uruchomić jego zapytanie z ograniczeniem liczby wyników, jeśli silnik taką możliwość zapewnia. Warto sprawdzić, czy tabela źródłowa istnieje, czy nazwy kolumn nie zostały zmienione oraz czy filtr nie eliminuje wszystkich rekordów. Błąd przy próbie zapisu nie oznacza uszkodzenia tabeli: może być prawidłową konsekwencją oznaczenia widoku jako tylko do odczytu. Zmiana danych powinna być wykonana inną, wyraźnie do tego przeznaczoną ścieżką, z zachowaniem reguł integralności zdefiniowanych w bazie.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę