Loading:


    Dostępne funkcje dla UPDATE - MySQL

    Składnia polecenia UPDATE zależy od tego, w ilu tablicach dokonujemy zmiany danych. I tak:

    w przypadku jednej tablicy: (patrz Listing 1.0),

     

    a w przypadku wielu tablic:(patrz Listing 2.0)

     

     

    Za pomocą polecenia UPDATE możemy zmienić zawartość kolumn w istniejących wierszach tablicy. Słowo SET wskazuje, które kolumny będziemy zmieniać oraz co będzie ich nową zawartością. Jeśli w poleceniu UPDATE wpiszemy słowo WHERE to możemy określić, w których wierszach dokonamy zmian, przy czym obowiązują tutaj zwyczajne zasady wyboru odpowiednich wierszy, tak jak w innych poleceniach SQL, a w szczególności w przypadku polecenia SELECT. Jeśli nie podamy opcji WHERE, wtedy zostaną zmienione wszystkie wiersze (uwaga! niebezpieczne). Podobnie działa opcja LIMIT; ogranicza liczbę wierszy, które ulegną zmianie podczas wykonywania polecenia UPDATE.

     

     

    • W przypadku słowa UPDATE możemy używać następujących dwóch parametrów:

    •  

      1. parametr LOW_PRIORITY powoduje opóźnienie wykonania polecenia UPDATE do momentu zakończenia wykonywania przez bazę wszystkich innych poleceń pobierania danych z danej tablicy.
      2. parametr IGNORE powoduje nieprzerywanie polecenia UPDATE w przypadku, kiedy wystąpią błędy podczas zmiany wartości kolumn (tzw. błędy duplikatu klucza). W takim wypadku wiersze, dla których występują konflikty, nie są zmieniane.
    • Polecenie UPDATE zapamiętuje bierzącą (przed zmianą) wartość danej kolumny. Na przykład, jeśli chcemy zwiększyć wartość kolumny o 2 to możemy wykonać następujące polecenie:(patrz Listing 3.0)

    • Przypisania (po słowie SET są wykonywane w poleceniu UPDATE od lewej do prawej. W przykłaszie poniżej najpierw następuje pomnożenie wartości kolumny przez 2, a dopiero później zwiększenie wartości kolumny o 1:(patrz Listing 4.0)

    • Jeśli próbujemy nadać kolumnie nową wartość, która jest taka sama jak poprzednia, to MySQL zasygnalizuje ten fakt.

    • Jeśli zmieniamy kolumny, które przy definicji tablicy były zadeklarowane jako NOT NULL wstawiając wartość NULL, wtedy MySQL wstawia do takiej kolumny wartość domyślną i wypisuje ostrzeżenie. Wartościami domyślnymi są (chyba, że przy definicji struktury tablicy zaznaczono inaczej): 0 dla kolumn typu numerycznego, pusty string '' dla kolumn typu znakowego, oraz wartość ``zero'' dla kolumn typu data i czas.

    • Polecenie UPDATE zwraca liczbę wmienionych rekordów (wierszy).

    • Zaczynając od wersji 3.23 MySQLa możemy używać opcji LIMIT liczba_wierszy w celu ograniczenia liczby wierszy, które zmienimy poleceniem UPDATE. Opcja LIMIT liczba_wierszy działa następująco:

      1. Przed wersją 4.0.13 MySQLa polecenie UPDATE zatrzymuje się w momencie kiedy zostanie zmienionych liczba_wierszy wierszy, które spełniały warunki wymienione po opcji WHERE.
      2. Od wersji 4.0.13 MySQLa polecenie UPDATE zatrzymuje się w momencie kiedy zostanie znalezionych liczba_wierszy wierszy, które spełniały warunki wymienione po opcji WHERE, bez względu na to, czy zostały one zmienione czy też nie zostały zmienione.
    • Jeśli użyjemy opcji ORDER BY wtedy wiersze będą zmieniane w kolejności takiej jak podano w to w tej opcji.

    • Od wersji 4.04 MySQLa za pomocą jednego polecenia UPDATE możemy zmieniać dane w kilku tablicach:(patrz Listing 5.0)

    •  

      Uwaga. Przy poleceniu UPDATE działającym na kilku tablicach, nie możemy używać opcji ORDER BY i LIMIT.

    • Aby wykonać zmiany w tablicy musimy mieć odpowiednie przywileje do dokonywania takich zmian.

    • Kiedy chcemy zmienić dane w kilku tablicach typu InnoDB, dla których zdefiniowane są klucze klucze obce, wtedy najprawdopodobniej MySQL wykona UPDATE w innej kolejności niż wynikałoby to z relacji rodzic/dziecko. W takim wypadku najprawdopodobniej polecenie UPDATE się nie powiedzie i dane nie zostaną zmienione. W takich wypadkach lepiej jest zmienić dane w jednej tablicy i polegać na możliwościach tablic typu InnoDB, dzięki którym tablice z kluczami obcymi zostaną zmienione w sposób odpowiedni.



    Napisz Artyku³

    Listing

    --Listing 1.0
    UPDATE
      [LOW_PRIORITY] [IGNORE] nazwa_tab
      SET nazwa_kol1=wyr1 [, nazwa_kol2=wyr2 ...]
      [WHERE definicja_where]
      [ORDER BY ...]
      [LIMIT liczba_wierszy]

    --Listing 2.0
    UPDATE
      [LOW_PRIORITY] [IGNORE] nazwa_tab1 [, nazwa_tab2 ...]
      SET nazwa_kol1=wyr1 [, nazwa_kol2=wyr2 ...]
      [WHERE definicja_where]

    --Listing 3.0
    UPDATE dane_personalne SET wiek=wiek+1;

    --Listing 4.0
    UPDATE dane_personalne SET wiek=wiek*2, wiek=wiek+1;

    --Listing 5.0
    UPDATE jednostki, miesiace SET jednostki.cena=miesiace.cena WHERE jednostki.id=miesiace.id;




    Dodano przez: divix
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
    dzieki pomoglo mi bardzo :D
    autor: kosa281 | 5595 | 2010-04-08 16:50:07


      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors