Nejprve potřebujete jedinečný index na (usersessid, product_id) . Nejsem si jistý, zda skutečně používáte automaticky generovaný sloupec id , ale pokud ne, měli byste změnit primární klíč na (usersessid, product_id) . Potom místo spuštění samostatného UPDATE dotaz, spusťte pouze jeden INSERT dotaz:
INSERT INTO sessionBasket (userid, usersessid, date_added, product_id, qty, notes)
VALUES (?, ?, now(), ?, ?, ?)
ON DUPLICATE KEY UPDATE qty = qty + ?
Aby bylo jasné, jak by měl jedinečný index vypadat:
CREATE UNIQUE INDEX sessionBasket_uniq ON sessionBasket (usersessid, product_id);
Nebo primární klíč:
ALTER TABLE sessionBasket ADD CONSTRAINT sessionBasket_pkey PRIMARY KEY (usersessid, product_id);