![]() |
![]() ![]() |
![]() |
![]()
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: 203 Pomógł: 55 Dołączył: 23.11.2008 Skąd: UKF Ostrzeżenie: (0%) ![]() ![]() |
Nie zrobisz tego w jednym zapytaniu (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 729 Pomógł: 346 Dołączył: 4.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
lukasz_os no cóż mylisz się, metod jest kilka np.
albo http://dev.mysql.com/doc/refman/5.1/en/ins...-duplicate.html Można również zrobić bardziej złożone zapytania z ifami sprawdzające czy jest dany wpis czy nie, ale to jest więcej zabawy |
|
|
![]()
Post
#4
|
|
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: 24.08.2025 - 07:43 |