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 z klauzulą WITH CHECK OPTION

Termin Definicja
Widok z klauzulą WITH CHECK OPTION

Klauzula WITH CHECK OPTION wymusza, by dane wstawiane przez widok spełniały jego warunek filtrujący.

Do czego służy klauzula WITH CHECK OPTION

Widok z klauzulą WITH CHECK OPTION pozwala ograniczyć modyfikowanie danych wykonywane za pośrednictwem tego widoku. Jeżeli definicja widoku zawiera warunek filtrujący, na przykład WHERE status = 'aktywny', klauzula wymaga, aby każdy wiersz dodany lub zmieniony przez widok nadal spełniał ten warunek. Baza danych odrzuca operację, gdy jej wynik powodowałby, że wiersz przestałby należeć do zbioru prezentowanego przez widok.

Przykładowo widok może udostępniać wyłącznie komputery znajdujące się w stanie przyjęty. Próba wykonania przez ten widok polecenia UPDATE, które zmieni status na wydany, zostanie zablokowana, ponieważ zmodyfikowany rekord nie spełnia już predykatu widoku. Podobnie nie powiedzie się INSERT pomijający wymagane wartości albo podający status spoza dozwolonego zakresu.

Przykład działania na widoku aktualizowalnym

Typowa definicja może wyglądać następująco: CREATE VIEW aktywne_zgloszenia AS SELECT id, klient, status FROM zgloszenia WHERE status = 'otwarte' WITH CHECK OPTION. Widok pokazuje tylko zgłoszenia o statusie otwarte, a jednocześnie wymusza, aby modyfikacje wykonane przez ten interfejs zachowywały tę cechę. Polecenie UPDATE aktywne_zgloszenia SET status = 'zamkniete' WHERE id = 10 jest więc odrzucane, natomiast zmiana wartości klient może zostać zaakceptowana, jeśli nie narusza warunku widoku.

Klauzula nie oznacza, że wszystkie kolumny widoku są automatycznie modyfikowalne. Możliwość użycia INSERT lub UPDATE zależy od konstrukcji widoku oraz reguł konkretnego systemu zarządzania bazą danych. Widoki oparte na jednej tabeli i prostym filtrowaniu są zwykle łatwiejsze do aktualizowania niż widoki zawierające agregacje, GROUP BY, DISTINCT, funkcje agregujące albo złożone połączenia tabel. WITH CHECK OPTION kontroluje zgodność zmiany z warunkiem, ale nie usuwa innych ograniczeń aktualizowalności.

Zakres kontroli i typowe ograniczenia

Sprawdzanie dotyczy operacji wykonywanych przez konkretny widok. Bezpośrednia modyfikacja tabeli bazowej może zmienić wartości tak, że rekord przestanie być widoczny w widoku, ponieważ sama klauzula nie jest ogólnym ograniczeniem nałożonym na tabelę. Jeżeli aplikacja zapisze dane bezpośrednio do tabeli, odpowiedzialność za inne reguły integralności przejmują między innymi ograniczenia NOT NULL, CHECK, klucze obce oraz inne mechanizmy dostępne w danym silniku.

W hierarchii widoków mogą występować dodatkowe reguły kontroli. Niektóre systemy baz danych obsługują warianty LOCAL i CASCADED. Wariant lokalny odnosi się przede wszystkim do warunku widoku, w którym klauzula została zadeklarowana, natomiast wariant kaskadowy uwzględnia również warunki widoków użytych w jego definicji. Dokładne zachowanie oraz dostępność tych wariantów należy sprawdzić w dokumentacji używanego silnika, ponieważ składnia i szczegóły implementacyjne nie są identyczne we wszystkich bazach danych.

Znaczenie podczas diagnostyki aplikacji i sprzętu

W aplikacji korzystającej z bazy danych odrzucenie zapisu przez widok z WITH CHECK OPTION może pojawić się jako błąd operacji INSERT albo UPDATE. Przy diagnozowaniu problemu trzeba porównać wartości wysyłane przez aplikację z warunkiem zapisanym w definicji widoku. Warto również sprawdzić, czy program nie próbuje zmienić kolumny używanej w filtrze, czy rekord nie został wcześniej zmodyfikowany przez inną transakcję oraz czy widok jest rzeczywiście aktualizowalny. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a przy problemach z aplikacjami diagnostyka może obejmować także sprawdzenie komunikatów błędów podczas zapisu danych.

Praktycznym skutkiem poprawnego zastosowania klauzuli jest utrzymanie spójności logicznej interfejsu widoku: użytkownik może modyfikować tylko takie rekordy, które nadal należą do zdefiniowanego zbioru. Nie zastępuje to jednak pełnego projektu kontroli danych. Przed wdrożeniem należy przetestować odczyt, dodawanie, aktualizację i usuwanie rekordów, a także osobno zweryfikować zachowanie przy wartościach granicznych, błędach uprawnień i jednoczesnych zmianach wykonywanych przez różne połączenia z bazą.

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