Mysql
 sql >> Database >  >> RDS >> Mysql

SU DUPLICATO AGGIORNAMENTO CHIAVE implementazione/progettazione

Per prima cosa hai bisogno di un indice univoco su (usersessid, product_id) . Non sono sicuro che tu stia effettivamente utilizzando la colonna id generata automaticamente , ma in caso contrario, dovresti cambiare la chiave primaria in (usersessid, product_id) . Quindi, invece di eseguire un UPDATE separato query, eseguire solo un singolo INSERT domanda:

INSERT INTO sessionBasket (userid, usersessid, date_added, product_id, qty, notes)
VALUES (?, ?, now(), ?, ?, ?)
ON DUPLICATE KEY UPDATE qty = qty + ?

Giusto per chiarire come dovrebbe apparire l'indice univoco:

CREATE UNIQUE INDEX sessionBasket_uniq ON sessionBasket (usersessid, product_id);

O chiave primaria:

ALTER TABLE sessionBasket ADD CONSTRAINT sessionBasket_pkey PRIMARY KEY (usersessid, product_id);