![]() |
![]() |
![]()
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. |
|
|
![]() |
![]()
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:
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). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 08:22 |