Vous avez d'abord besoin d'un index unique sur (usersessid, product_id)
. Je ne sais pas si vous utilisez réellement la colonne générée automatiquement id
, mais sinon, vous devez changer la clé primaire en (usersessid, product_id)
. Ensuite, au lieu d'exécuter une UPDATE
distincte requête, n'exécutez qu'un seul INSERT
requête :
INSERT INTO sessionBasket (userid, usersessid, date_added, product_id, qty, notes)
VALUES (?, ?, now(), ?, ?, ?)
ON DUPLICATE KEY UPDATE qty = qty + ?
Juste pour préciser à quoi devrait ressembler l'index unique :
CREATE UNIQUE INDEX sessionBasket_uniq ON sessionBasket (usersessid, product_id);
Ou clé primaire :
ALTER TABLE sessionBasket ADD CONSTRAINT sessionBasket_pkey PRIMARY KEY (usersessid, product_id);