Ćwiczenia
> Perspektywy w MS SQL Server 2000 > Modyfikowanie danych przy użyciu perspektyw |
![]() ![]() |
||||||||||||||||||||
7.2 Modyfikowanie danych przy użyciu perspektyw![]() Utworzenie widoku nie powoduje utworzenia kopii danych. Widok jest "szablonem", za pomocą którego wyświetlamy dane. Modyfikacja danych widoku polega więc w rzeczywistości na modyfikacji danych w tabelach będących źródłem danych dla widoku. Istnieje kilka ograniczeń co do modyfikacji danych przy użyciu widoków: - widok używany do modyfikacji danych nie może zawierać funkcji grupujących, - jednym poleceniem można modyfikować w widoku tylko kolumny pochodzące z jednej tabeli (lub dodawać dane do jednej tabeli), - modyfikowane dane nie mogą być wartościami obliczonymi na podstawie wartości innych kolumn, - wstawienie nie może naruszać warunków narzuconych w tabelach źródłowych (dotyczy to także, a może w szczególności, pól tabeli, które nie wchodzą w skład widoku - jeśli mają one ustawione opcję NOT NULL, to przy pomocy widoku nie można do tej tabeli wstawić nowych danych), - wstawiane dane muszą być zgodne z warunkiem WITH CHECK OPTION w definicji widoku. Zobaczmy przykłady wstawiania i modyfikacji danych przy użyciu widoków.
Krok 1 - Modyfikuj dane przy użyciu widoku używając polecenia UPDATE1. Uruchom program Query Analyzer.2. Zaloguj się używając uwierzytelnienia systemu Windows. 3. W menu głównym programu wybierz File - Open. 4. W oknie Open Query File wybierz plik demo_7_2_1.sql. 5. Zaznacz i uruchom (klawisz F5) fragmenty kodu oznaczone w komentarzach jako (1) i (2).
Sprawdzamy w ten sposób, jakie dane zawiera widok widok_ksiazki_wydawnictwa. tytul rok_wydania wydawnictwo ---------------------------------------------- ----------- ----------- SQL Server 2000. Vademecum Administratora 2001 MS Press Windows Server 2003. Vademecum Administratora 2003 MS Press UML w kropelce 2002 LTP MS Access wersja 2002 dla ekspertów 2003 MS Press XML na poważnie 2002 Helion (5 row(s) affected)6. Zaznacz i uruchom (F5) fragment kodu oznaczony w komentarzu jako (3).
Wynikiem wykonania powyższego kodu jest zmodyfikowanie nazwy wydawnictwa "MS Press" na "Promise". 7. Zaznacz i uruchom (F5) ponownie fragment kodu oznaczony w komentarzu jako (2) i sprawdź, czy rzeczywiście nazwa wydawnictwa uległa zmianie. 8. Zaznacz i uruchom (F5) fragment kodu oznaczony w komentarzu jako (4).
Wynikiem wykonania powyższego kodu jest wyświetlenie zawartości tabeli Wydawnictwa. ID_wydawnictwa wydawnictwo -------------- ----------- 1 Promise 2 LTP 3 Helion (3 row(s) affected)Jak widać na pozycji pierwszej w kolumnie wydawnictwo mamy wartość "Promise" zamiast dotychczasowej "MS Press". Czyli tak naprawdę modyfikacji nie ulegają dane w widoku, ale w jednej z tabel wykorzystywanych w definicji widoku. Krok 2 - Dodawaj nowe dane przy użyciu widoku używając polecenia INSERT1. Zaznacz i uruchom (F5) fragment kodu oznaczony w komentarzu jako (4).
Wynikiem próby wykonania powyższego kodu jest błąd mówiący o tym, że nie możemy zmodyfikować danych w widoku, ponieważ polecenie usiłuje modyfikować dane w więcej niż jednej tabeli bazowej widoku. 2. Zaznacz i uruchom (F5) fragment kodu oznaczony w komentarzu jako (6).
Wynikiem wykonania powyższego kodu jest utworzenie widoku o nazwie widok_ksiazki_wydawnictwa_2 podobnego do poprzednio utworzonego widoku widok_ksiazki_wydawnictwa. Jedyną zmianą w budowie widoku jest włączenie do widoku kolumny ID_wydawnictwa z tabeli Ksiazki. 3. Zaznacz i uruchom (F5) fragment kodu oznaczony w komentarzu jako (7).
Wynikiem wykonania powyższego kodu jest wyświetlenie danych ze świeżo utworzonego widoku widok_ksiazki_wydawnictwa_2. tytul rok_wydania ID_wydawnictwa wydawnictwo ---------------------------------------------- ----------- -------------- ----------- SQL Server 2000. Vademecum Administratora 2001 1 Promise Windows Server 2003. Vademecum Administratora 2003 1 Promise UML w kropelce 2002 2 LTP MS Access wersja 2002 dla ekspertów 2003 1 Promise XML na poważnie 2002 3 Helion (5 row(s) affected)4. Zaznacz i uruchom (F5) fragment kodu oznaczony w komentarzu jako (8).
Wynikiem wykonania powyższego kodu jest wstawienie nowego wiersza do tabeli Ksiazki (mimo, że wstawiamy dane w widok). Powyższą operację możemy wykonać, ponieważ w tabeli Wydawnictwa istnieje wiersz mający w kolumnie ID_wydawnictwa wartość 1 (tabela Ksiazki korzysta z tej kolumny na potrzeby własnej kolumny - klucza obcego - ID_wydawnictwa). Gdybyśmy usiłowali jednocześnie wstawić nieistniejące wydawnictwo, polecenie INSERT zwróciłoby błąd. 5. Zaznacz i uruchom (F5) ponownie fragment kodu oznaczony w komentarzu jako (7). Tym razem wynikiem wykonania zapytania SELECT jest wyświetlenie danych z widoku widok_ksiazki_wydawnictwa_2 z nowo dodanym wierszem (zaznaczyliśmy go na czerwono). tytul rok_wydania ID_wydawnictwa wydawnictwo ---------------------------------------------- ----------- -------------- ----------- SQL Server 2000. Vademecum Administratora 2001 1 Promise Windows Server 2003. Vademecum Administratora 2003 1 Promise UML w kropelce 2002 2 LTP MS Access wersja 2002 dla ekspertów 2003 1 Promise XML na poważnie 2002 3 Helion SQL Server 2000 1 Promise (5 row(s) affected)
Przejdź dalej ![]() |
|||||||||||||||||||||
![]() Ćwiczenia > Perspektywy w MS SQL Server 2000 > Modyfikowanie danych przy użyciu perspektyw |