Mysql
 sql >> Datenbank >  >> RDS >> Mysql

ON DUPLICATE KEY UPDATE Implementierung/Design

Zuerst benötigen Sie einen eindeutigen Index für (usersessid, product_id) . Ich bin mir nicht sicher, ob Sie tatsächlich die automatisch generierte Spalte id verwenden , aber wenn nicht, sollten Sie den Primärschlüssel in (usersessid, product_id) ändern . Dann anstatt ein separates UPDATE auszuführen Abfrage nur ein einziges INSERT ausführen Abfrage:

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

Nur um zu verdeutlichen, wie der eindeutige Index aussehen sollte:

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

Oder Primärschlüssel:

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