Primero necesita un índice único en (usersessid, product_id)
. No estoy seguro de si realmente está utilizando la columna generada automáticamente id
, pero si no, debe cambiar la clave principal a (usersessid, product_id)
. Luego, en lugar de ejecutar un UPDATE
separado consulta, solo ejecute un solo INSERT
consulta:
INSERT INTO sessionBasket (userid, usersessid, date_added, product_id, qty, notes)
VALUES (?, ?, now(), ?, ?, ?)
ON DUPLICATE KEY UPDATE qty = qty + ?
Solo para dejar en claro cómo debería verse el índice único:
CREATE UNIQUE INDEX sessionBasket_uniq ON sessionBasket (usersessid, product_id);
O clave principal:
ALTER TABLE sessionBasket ADD CONSTRAINT sessionBasket_pkey PRIMARY KEY (usersessid, product_id);