Najpierw potrzebujesz unikalnego indeksu na (usersessid, product_id)
. Nie jestem pewien, czy faktycznie używasz automatycznie generowanej kolumny id
, ale jeśli nie, zmień klucz podstawowy na (usersessid, product_id)
. Następnie zamiast uruchamiać oddzielną UPDATE
zapytanie, uruchom tylko jedno INSERT
zapytanie:
INSERT INTO sessionBasket (userid, usersessid, date_added, product_id, qty, notes)
VALUES (?, ?, now(), ?, ?, ?)
ON DUPLICATE KEY UPDATE qty = qty + ?
Żeby było jasne, jak powinien wyglądać unikalny indeks:
CREATE UNIQUE INDEX sessionBasket_uniq ON sessionBasket (usersessid, product_id);
Lub klucz podstawowy:
ALTER TABLE sessionBasket ADD CONSTRAINT sessionBasket_pkey PRIMARY KEY (usersessid, product_id);