Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ON DUPLICATE KEY UPDATE
Forum PHP.pl > Forum > Przedszkole
morthan
Wygrzebuję temat, ponieważ nie do końca rozumiem zachowanie tej instrukcji. U mnie po wykonaniu zapytania:

  1. INSERT INTO albums (artist, title)
  2. VALUES('Sepultura', 'Chaos A.D.')
  3. ON DUPLICATE KEY UPDATE title='Chaos A.D.';


każdorazowo dostaje nowy rekord w bazie, który jest dokładnym duplikatem poprzedniego.
Z tego co rozumiem zapytanie to powinno pierw dodać rekord, jeśli ten nie istnieje, a jak istnieje to wykonać UPDATE.
Więc dlaczego przy każdym wykonaniu dodaje nowy rekord?


Serwer to najnowsza wersja WAMPa. Polecenie wpisywane w PhpMyAdmin.
wookieb
Jak sama nazwa wskazuje UPDATE wykonuje się przy opcji DUPLIKACJI KLUCZA. DUPLIKACJI KLUCZA tzn naruszenie warunku unikalności pola.
Zapewne unikalnym polem w twojej bazie jest ID. Przy twoim insert nie wymuszasz ustawienia konkretnej wartości pola ID tak też unikalność nie jest naruszona, ponieważ twoje pole ID zapewne ma właściwość 'auto_increment'.
Unikalność pola można wymusić dodając na nim klucz UNIQUE
morthan
Dzięki.
Sprawdziłem, po dodaniu id jako unikalne pole działa bez problemu.
Zamykam temat.

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.