sql >> Database teknologi >  >> RDS >> Mysql

PÅ DUBLIKAT NØGLOPDATERING implementering/design

Først skal du have et unikt indeks på (usersessid, product_id) . Jeg er ikke sikker på, om du rent faktisk bruger den automatisk genererede kolonne id , men hvis ikke, bør du ændre den primære nøgle til (usersessid, product_id) . Så i stedet for at køre en separat UPDATE forespørgsel, kør kun en enkelt INSERT forespørgsel:

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

Bare for at gøre det klart, hvordan det unikke indeks skal se ud:

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

Eller primær nøgle:

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



  1. Heroku - Kan ikke oprette forbindelse til lokal MySQL-server

  2. Problemer under import af en txt-fil til postgres ved hjælp af php

  3. Kan ikke oprette den anmodede tjeneste [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

  4. MySQL database udfyldt dropdown boks og PHP søgning