sql >> Database >  >> RDS >> Mysql

OP DUPLICATE KEY UPDATE implementatie/ontwerp

Eerst heb je een unieke index nodig op (usersessid, product_id) . Ik weet niet zeker of je de automatisch gegenereerde kolom id daadwerkelijk gebruikt , maar als dat niet het geval is, moet u de primaire sleutel wijzigen in (usersessid, product_id) . In plaats van een aparte UPDATE uit te voeren query, voer slechts een enkele INSERT uit vraag:

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

Even om duidelijk te maken hoe de unieke index eruit moet zien:

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

Of primaire sleutel:

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



  1. MySQL min en max van elke kolom

  2. Hoe Coalesce() werkt in SQLite

  3. Query voor gebruikers die niet in een specifieke groep zitten? (Wilde BEHALVE gebruiken, maar het lijkt erop dat MySQL dit niet ondersteunt)

  4. Postgres-functie die tabel retourneert en geen gegevens in kolommen retourneert