/Widoki

Z Brain-wiki

TI:WTBD/Widoki

Widoki (view, w polskiej literaturze czasami: perspektywy) można uważać za zapamiętane w schemacie bazy zapytania (SELECT), umożliwiające alternatywne prezentacje tych samych danych (np. w postaci nieznormalizowanej), bez wprowadzania duplikacji.

CREATE VIEW [ IF NOT EXISTS ] nazwa AS polecenie_select;

W zapytaniach widoku można używać równoważnie jak tabeli. Są natomiast duże różnice pomiędzy implementacjami co do zakresu modyfikowalności widoku. Tzn. tego, czy można pisać instrukcje INSERT, DELETE czy UPDATE odwołując się w nich do widoku, a nie do tabeli (tabel) tzw. źródłowych. W niektórych systemach przyjęto podejście, że modyfikacja danych poprzez widok powinna być możliwa w każdym przypadku, gdy operacja jest dobrze określona w terminach danych w tabelach źródłowych. Niestety to na oko całkiem rozsądne podejście prowadzi do dość zawiłych reguł, gdy chce się konkretnie określić jakie operacje są legalne, a jakie nie.

SQLite dla odmiany zabrania całkiem modyfikacji danych poprzez widoki. To znaczy, nie można wprost odwołać się do widoku w instrukcjach zmieniających dane. Można natomiast pracowicie stworzyć tzw. wyzwalacze (trigger) INSTEAD OF, które będą wywoływane w miejsce instrukcji zmieniających dane, odwołujących się do widoku (tym samym instrukcje takie staną się legalne).