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

Operacja UPDATE

Termin Definicja
Operacja UPDATE

Operacja UPDATE modyfikuje istniejące wiersze — pominięcie klauzuli WHERE zmienia całą tabelę.

Operacja UPDATE – czym jest modyfikowanie danych w tabeli

Operacja UPDATE należy do podstawowych poleceń języka SQL i służy do zmiany danych, które już znajdują się w tabeli. Nie tworzy nowego wiersza i nie usuwa istniejącego rekordu. Jej zadaniem jest zastąpienie jednej lub kilku wartości w wybranych wierszach innymi wartościami. Dzięki temu możliwe jest między innymi poprawienie literówki w nazwie produktu, aktualizacja statusu zamówienia, zmiana adresu kontaktowego albo uzupełnienie pola, które wcześniej pozostawało puste.

Najczęściej polecenie składa się ze słowa UPDATE, nazwy tabeli, klauzuli SET oraz warunku WHERE. Część SET wskazuje kolumny przeznaczone do zmiany i wartości, które mają zostać zapisane. Klauzula WHERE ogranicza zakres działania do rekordów spełniających określone kryterium. W uproszczonej postaci zapytanie wygląda następująco:

UPDATE produkty SET status = 'dostępny' WHERE id = 15;

W tym przykładzie zmieniony zostanie status rekordu identyfikowanego numerem 15. Pozostałe wiersze tabeli pozostaną bez zmian, o ile nie spełniają warunku. Takie rozdzielenie celu operacji od zakresu działania jest istotne, ponieważ pojedyncze polecenie UPDATE może oddziaływać zarówno na jeden rekord, jak i na dużą część tabeli.

Warto pamiętać, że modyfikacja danych jest operacją zapisu. Po jej wykonaniu wcześniejsza wartość może zostać zastąpiona, dlatego przed uruchomieniem zapytania powinno się sprawdzić warunek, typy danych oraz przewidywaną liczbę zmienianych wierszy. Sama poprawność składni nie oznacza jeszcze, że zapytanie jest bezpieczne pod względem zakresu działania.

Operacja UPDATE – klauzula WHERE, zakres i porównanie z innymi poleceniami

Najważniejszą różnicę między kontrolowaną a niezamierzoną zmianą stanowi obecność właściwej klauzuli WHERE. Warunek może odnosić się do identyfikatora, kategorii, daty, statusu lub kombinacji kilku kryteriów. Przykładowo:

UPDATE zamowienia SET status = 'wysłane' WHERE numer = 2048;

Zmiana dotyczy tu zamówienia o konkretnym numerze. Jeżeli natomiast warunek zostanie zbudowany na podstawie kilku kolumn, zakres może obejmować wiele rekordów:

UPDATE produkty SET aktywny = 0 WHERE kategoria = 'archiwalne' AND stan = 0;

Takie polecenie ma sens wtedy, gdy zamiarem jest wyłączenie wszystkich produktów spełniających oba kryteria. Należy zwrócić uwagę na operator AND, ponieważ wymaga jednoczesnego spełnienia warunków. Operator OR rozszerza zakres i może wskazać znacznie więcej wierszy, niż początkowo zakładano. Również porównania z wartością NULL wymagają właściwej składni, zwykle z użyciem IS NULL albo IS NOT NULL, a nie zwykłego znaku równości.

UPDATE różni się od INSERT i DELETE zakresem przeznaczenia. INSERT dodaje nowe wiersze, DELETE usuwa istniejące, a UPDATE modyfikuje zawartość już zapisanych rekordów. Z kolei SELECT służy do odczytu i sam w sobie nie zmienia danych. Przed wykonaniem aktualizacji rozsądne jest uruchomienie odpowiadającego jej warunku w zapytaniu SELECT, aby zobaczyć, które wiersze zostaną objęte operacją.

SELECT id, status FROM zamowienia WHERE status = 'nowe';

Jeżeli wynik nie odpowiada założeniom, nie powinno się przechodzić do UPDATE. Najpierw należy poprawić kryteria albo potwierdzić, że szerszy zakres jest zamierzony.

Operacja UPDATE – typowe problemy i skutki błędnego zapytania

Jednym z częstych problemów jest pominięcie WHERE. W takiej sytuacji instrukcja obejmuje wszystkie wiersze tabeli. Przykład:

UPDATE klienci SET zgoda_marketingowa = 0;

Wykonanie tego polecenia ustawi wskazaną wartość w całej tabeli, niezależnie od wcześniejszego stanu poszczególnych rekordów. Czasem jest to celowe, lecz zwykle wynika z przeoczenia. Samo dodanie WHERE nie wystarcza, jeśli warunek jest zbyt ogólny. Kryterium WHERE status IS NOT NULL może objąć prawie całą tabelę, a warunek oparty na nieunikalnej nazwie może zmienić wiele rekordów o podobnych danych.

Innym zagrożeniem jest pomylenie kolumny identyfikującej z kolumną opisową. Aktualizacja według imienia, miasta albo nazwy produktu może nie wskazać jednego rekordu. Bezpieczniejszy zakres uzyskuje się zwykle dzięki kluczowi głównemu lub innemu ograniczeniu gwarantującemu unikalność. Warto też uważać na wartości domyślne, automatyczne konwersje typów oraz zaokrąglenia pól liczbowych. Zapis tekstu w kolumnie przeznaczonej na liczbę może zakończyć się błędem albo nieoczekiwaną interpretacją.

Problem może pojawić się także wtedy, gdy aktualizacja narusza ograniczenia integralności. Tabela może wymagać unikalności, określonego formatu, obecności wartości albo zgodności z rekordem z innej tabeli. Wówczas baza danych może odrzucić zmianę. Jeżeli część operacji została już wykonana w ramach większego procesu, znaczenie ma transakcja. Polecenia COMMIT i ROLLBACK pozwalają odpowiednio zatwierdzić albo wycofać zestaw zmian, o ile sposób pracy z bazą obsługuje taki mechanizm.

Należy również brać pod uwagę blokady i równoczesny dostęp wielu użytkowników. Długotrwała aktualizacja dużego zakresu może opóźniać inne operacje. Z tego powodu przy większych zbiorach stosuje się często mniejsze partie, odpowiednie indeksy oraz wykonywanie zmian w kontrolowanym czasie. Konkretne rozwiązanie zależy od rodzaju bazy, struktury tabeli i znaczenia modyfikowanych danych.

Operacja UPDATE – praktyczne wskazówki przed i po wykonaniu

Przed zmianą danych powinno się ustalić dokładny cel operacji: która tabela jest właściwa, które kolumny mają zostać zmodyfikowane oraz jakie rekordy powinny pozostać nietknięte. Następnie warto sprawdzić strukturę tabeli, typy kolumn, klucze, ograniczenia i ewentualne reguły automatycznie uruchamiane przy zapisie. Pomocne jest przygotowanie zapytania SELECT z identyczną klauzulą WHERE jak w planowanym UPDATE.

  • Najpierw należy wykonać odczyt kontrolny i sprawdzić liczbę znalezionych wierszy.
  • Warto wyświetlić identyfikatory oraz stare wartości przed ich zastąpieniem.
  • Jeżeli aktualizacja ma objąć jeden rekord, powinno się użyć możliwie jednoznacznego identyfikatora.
  • Przy wielu rekordach należy oszacować zakres i upewnić się, że szeroka zmiana jest zamierzona.
  • Istotne modyfikacje powinny być wykonywane z możliwością odtworzenia danych lub wycofania transakcji.
  • Po operacji należy ponownie odczytać zmienione wiersze i zweryfikować wartości.

Przydatna bywa także technika zapisania poprzednich wartości przed modyfikacją. W zależności od środowiska może to oznaczać kopię wybranych wierszy, dziennik zmian albo przygotowanie osobnego zestawu danych testowych. Na etapie testów należy używać informacji nieprodukcyjnych lub odizolowanej kopii, aby nie naruszyć rzeczywistych rekordów. Dobrą praktyką jest dokumentowanie powodu zmiany, daty wykonania, zastosowanego warunku i przewidywanej liczby wierszy.

Nie powinno się opierać bezpieczeństwa wyłącznie na interfejsie aplikacji. Formularz może ograniczać zakres wyboru, lecz zapytanie wysyłane do bazy powinno nadal mieć własne zabezpieczenia. W kodzie aplikacji należy stosować parametryzację zamiast składania zapytań z niekontrolowanych fragmentów tekstu. Chroni to przed wstrzyknięciem poleceń i ogranicza ryzyko błędnej interpretacji znaków specjalnych.

Operacja UPDATE – kiedy zgłosić problem do serwisu

Do konsultacji technicznej warto zgłosić się wtedy, gdy po aktualizacji zmieniła się większa liczba rekordów, niż przewidywano, zniknęły wcześniejsze wartości, aplikacja przestała poprawnie odczytywać dane albo pojawiły się komunikaty o naruszeniu spójności. W takiej sytuacji nie powinno się wykonywać kolejnych przypadkowych UPDATE, ponieważ następne zmiany mogą utrudnić ustalenie pierwotnej przyczyny i odtworzenie właściwego stanu.

Przed przekazaniem problemu warto zabezpieczyć komunikat błędu, czas wykonania, nazwę aplikacji, opis oczekiwanego rezultatu oraz informację o tym, czy operacja była wykonywana ręcznie, czy automatycznie. Nie należy przekazywać haseł ani pełnych danych wrażliwych. Jeżeli dostępna jest kopia zapasowa lub dziennik zmian, informacja o ich czasie może pomóc w dobraniu bezpiecznej metody odzyskania danych.

W Warszawie wsparcie przy problemach z komputerem, aplikacją bazodanową lub nieprawidłowo działającym środowiskiem może zostać zgłoszone do Warszawskiego Pogotowia Komputerowego 24/7; naprawy z reguły realizowane są do 3 dni roboczych. Przed rozpoczęciem działań technicznych warto opisać, jakie zapytanie wykonano, na jakiej tabeli pracowano i jaki wynik miał zostać osiągnięty. Tak przygotowane informacje ułatwiają ocenę sytuacji, ograniczenie dalszych zmian oraz dobór sposobu przywrócenia poprawnych danych.

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