Proszę Państwa, czasem jest potrzeba zrobić coś a’la Insert or Update
. Zadanie jest dość trywialne, ale nie zawsze optymalne zarówno pod względem czasu implementacji jak i czasu wykonania – pierwsze co wpada do głowy, to implementacja czterech kroków:
- Wyciągnij wpisy z tabeli które spełniają wymagania
- Sprawdź czy wynik poprzedniego zapytania jest pusty
- Jeśli odpowiedź jest pozytywna – wykonaj UPDATE
- W przeciwnym razie wykonaj INSERT
W takich sytuacjach bardzo się przydaje zgłębienie wiedzy w narzędziach i zapytaniach wychodzących poza zakres ANSI SQL np. Transact-SQL (MS Sql Server) lub PL/pgSQL (Postgres). Oba te wyżej wspomniane języki mają cudowne narzędzie umożliwiające wykonanie całej roboty InsertOrUpdate
za jednym zapytaniem – tzw UPSERT.
Nazwa pochodzi od połączenia dwóch słów – UPDATE oraz INSERT. Założenie takiej kwerendy jest proste – spróbuj wstawić nowy rekord do tabeli, i w przypadku pojawienia się błędu o duplikacje, zrób update.
Czytaj dalej