Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Firebird] Insert or update
Forum PHP.pl > Forum > Bazy danych
icemanwlkp
Witam , mam pytanie czy podczas operacji insert or update mogę wykorzystywać już istniejące zapisy ? Jak w samym update set np update tabele set a+a+1;

takie zapytanie wywala mi błąd , może je źle napisałem chce by kolumna ilość była modyfikowana przez parametr :i

  1. UPDATE OR INSERT INTO sklepy_stan_m (TOWAR, ID_PRODUKTU, METKA, ILOSC, CENA, ID_SKLEPU, MIESIAC, ROK)
  2. VALUES (:t, :p, :m, (ilosc)+:i, :c, :id_sklepu, :miesiac, :rok)
  3. matching(ID_PRODUKTU, METKA, CENA, ID_SKLEPU, MIESIAC, ROK);
nospor
Nie uzywam FireBird ale z tego co wyczytalem w necie w minute ( wink.gif ) musisz uzyc MERGE

http://forums.devshed.com/firebird-sql-dev...ues-610066.html
http://stackoverflow.com/questions/1461435...rence-in-values

google Twoim przyjacielem wink.gif
icemanwlkp
No tak ,ale to merge cosik zawodzi , jeżeli using (tu zapytanie ) jest puste czyli null wyników.

  1. merge INTO sklepy_stan_m m USING (SELECT * FROM sklepy_stan_m s WHERE s.id_sklepu=33 AND s.miesiac=13 AND s.rok=2016 ) cd
  2. ON (m.id_produktu = cd.id_produktu AND m.metka=cd.metka AND m.cena=cd.cena)
  3. when matched then
  4. UPDATE SET m.ilosc = m.ilosc+1
  5. when NOT matched then
  6. INSERT (TOWAR, ID_PRODUKTU, METKA, ILOSC, CENA, ID_SKLEPU, MIESIAC, ROK)
  7. VALUES ('usun', 12, 1234567890123456, 1, '2.00', 33, 13, 2016)
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.