Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

NA implementação/design de ATUALIZAÇÃO DE CHAVE DUPLICADA


Primeiro você precisa de um índice exclusivo em (usersessid, product_id) . Não tenho certeza se você está realmente usando a coluna gerada automaticamente id , mas se não, você deve alterar a chave primária para (usersessid, product_id) . Então, em vez de executar um UPDATE separado consulta, execute apenas um único INSERT consulta:
INSERT INTO sessionBasket (userid, usersessid, date_added, product_id, qty, notes)
VALUES (?, ?, now(), ?, ?, ?)
ON DUPLICATE KEY UPDATE qty = qty + ?

Apenas para deixar claro como o índice exclusivo deve ser:
CREATE UNIQUE INDEX sessionBasket_uniq ON sessionBasket (usersessid, product_id);

Ou chave primária:
ALTER TABLE sessionBasket ADD CONSTRAINT sessionBasket_pkey PRIMARY KEY (usersessid, product_id);