sql >> Databáze >  >> RDS >> Mysql

ON DUPLICATE KEY UPDATE implementace/návrh

Nejprve potřebujete jedinečný index na (usersessid, product_id) . Nejsem si jistý, zda skutečně používáte automaticky generovaný sloupec id , ale pokud ne, měli byste změnit primární klíč na (usersessid, product_id) . Potom místo spuštění samostatného UPDATE dotaz, spusťte pouze jeden INSERT dotaz:

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

Aby bylo jasné, jak by měl jedinečný index vypadat:

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

Nebo primární klíč:

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



  1. jak získám výsledky mysql dnešního data?

  2. Agregace dat mongodb vs mysql

  3. Jak používat Top with Ties v SQL Server - SQL Server / TSQL výukový program, část 114

  4. mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows atd... očekává, že parametr 1 bude zdrojem