まず、(usersessid, product_id)
に一意のインデックスが必要です 。自動生成された列id
を実際に使用しているかどうかはわかりません 、ただしそうでない場合は、主キーを(usersessid, product_id)
に変更する必要があります。 。次に、別のUPDATE
を実行する代わりに クエリ、単一のINSERT
のみを実行します クエリ:
INSERT INTO sessionBasket (userid, usersessid, date_added, product_id, qty, notes)
VALUES (?, ?, now(), ?, ?, ?)
ON DUPLICATE KEY UPDATE qty = qty + ?
一意のインデックスがどのように表示されるかを明確にするために:
CREATE UNIQUE INDEX sessionBasket_uniq ON sessionBasket (usersessid, product_id);
または主キー:
ALTER TABLE sessionBasket ADD CONSTRAINT sessionBasket_pkey PRIMARY KEY (usersessid, product_id);