Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]insert into / update w jednym ?
peter13135
post
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Mam taki "problem", że muszę dodać rekord do bazy, lub zaktualizować jeśli taki już istnieje.
Najpierw muszę zrobić zapytanie typu SELECT sprawdzającego czy rekord istnieje. Jeśli rekord istnieje, to mam dodać nowy, jeśli nie to zaktualizować.
A czy da się to jakoś zrobić w jednym zapytaniu ?
Jeśli tak, to proszę o przykład.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pmir13
post
Post #2





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

Ostrzeżenie: (0%)
-----


Zdecydowanie polecam składnię INSERT ... ON DUPLICATE KEY UPDATE ...
W przypadku REPLACE mamy do czynienia z usunięciem rekordu a następnie wstawieniem nowego, co powoduje niepotrzebne obciążenie, a także między innymi fragmentację indeksów.
Przykład:
  1. INSERT INTO odwiedziny(user_id,ile) VALUES(15,1)
  2. ON DUPLICATE KEY UPDATE ile=ile+1;

Składnia ta wymaga by kolumna lub kolumny które mają decydować o tym, czy dany rekord jest już w bazie, miały ustawiony unikalny klucz (PRIMARY lub UNIQUE).
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 08:22