Mysql
 sql >> Base de données >  >> RDS >> Mysql

ON DUPLICATE KEY UPDATE mise en œuvre/conception

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);