Trước tiên, bạn cần một chỉ mục duy nhất trên (usersessid, product_id)
. Tôi không chắc liệu bạn có thực sự đang sử dụng cột id
được tạo tự động hay không , nhưng nếu không, bạn nên thay đổi khóa chính thành (usersessid, product_id)
. Sau đó, thay vì chạy một UPDATE
riêng biệt truy vấn, chỉ chạy một INSERT
duy nhất truy vấn:
INSERT INTO sessionBasket (userid, usersessid, date_added, product_id, qty, notes)
VALUES (?, ?, now(), ?, ?, ?)
ON DUPLICATE KEY UPDATE qty = qty + ?
Chỉ để làm rõ chỉ mục duy nhất trông như thế nào:
CREATE UNIQUE INDEX sessionBasket_uniq ON sessionBasket (usersessid, product_id);
Hoặc khóa chính:
ALTER TABLE sessionBasket ADD CONSTRAINT sessionBasket_pkey PRIMARY KEY (usersessid, product_id);