Pertama, Anda memerlukan indeks unik di (usersessid, product_id)
. Saya tidak yakin apakah Anda benar-benar menggunakan kolom yang dibuat secara otomatis id
, tetapi jika tidak, Anda harus mengubah kunci utama menjadi (usersessid, product_id)
. Kemudian alih-alih menjalankan UPDATE
separate yang terpisah kueri, hanya jalankan satu INSERT
permintaan:
INSERT INTO sessionBasket (userid, usersessid, date_added, product_id, qty, notes)
VALUES (?, ?, now(), ?, ?, ?)
ON DUPLICATE KEY UPDATE qty = qty + ?
Untuk memperjelas seperti apa seharusnya indeks unik tersebut:
CREATE UNIQUE INDEX sessionBasket_uniq ON sessionBasket (usersessid, product_id);
Atau kunci utama:
ALTER TABLE sessionBasket ADD CONSTRAINT sessionBasket_pkey PRIMARY KEY (usersessid, product_id);