sql >> Databasteknik >  >> RDS >> Mysql

PÅ DUBLIKAT NYCKELUPPDATERING implementering/design

Först behöver du ett unikt index på (usersessid, product_id) . Jag är inte säker på om du faktiskt använder den automatiskt genererade kolumnen id , men om inte, bör du ändra primärnyckeln till (usersessid, product_id) . Då istället för att köra en separat UPDATE fråga, kör bara en enda INSERT fråga:

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

Bara för att göra det tydligt hur det unika indexet ska se ut:

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

Eller primärnyckel:

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



  1. java - DataSource för fristående applikation - ingen applikationsserver

  2. Hur skapar man en MySql-databas med shell_exec php?

  3. MySQL:hämta ett stort urval i bitar

  4. Använda Spotlight Cloud för att lösa blockering av SQL Server