Först behöver du ett unikt index på (usersessid, product_id)
. Jag är inte säker på om du faktiskt använder den automatiskt genererade kolumnen id
, men om inte, bör du ändra primärnyckeln till (usersessid, product_id)
. Då istället för att köra en separat UPDATE
fråga, kör bara en enda INSERT
fråga:
INSERT INTO sessionBasket (userid, usersessid, date_added, product_id, qty, notes)
VALUES (?, ?, now(), ?, ?, ?)
ON DUPLICATE KEY UPDATE qty = qty + ?
Bara för att göra det tydligt hur det unika indexet ska se ut:
CREATE UNIQUE INDEX sessionBasket_uniq ON sessionBasket (usersessid, product_id);
Eller primärnyckel:
ALTER TABLE sessionBasket ADD CONSTRAINT sessionBasket_pkey PRIMARY KEY (usersessid, product_id);