Update daca valoarea exista

Salut! Am nevoie de putin ajutor.

Am aceast tabel pentru baza de date MySQL

CREATE TABLE `order_products` (
  `id` int UNSIGNED NOT NULL,
  `order_id` int(10) NOT NULL DEFAULT 0  
  `quantity` int(10) NOT NULL DEFAULT 1,
  `sku` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

Cand fac un POST cu un ID si un SKU, aceasta linie PHP introduce o noua coloana in tabel

$db->query(sprintf("INSERT INTO order_products (order_id, sku) VALUES (%s, %s)",  $order_id, $sku));

Daca introduc de mai multe ori acelasi sku pentru acelasi order_id vreau sa modific quantity in +1

Care este cea mai buna solutie pentru a putea face asta?

Sa fac o verificare tot in PHP pentru a verifica daca exista sku pentru acelasi order_id si sa ii fac update
Sau as putea face ceva mai simplu in tabelul MySQL ? Este posibil sa fac UNIQUE KEY pentru order_id ? Eu nu stiu cum se face.

1 Like

Insert into… ON DUPLICATE KEY UPDATE quantity = quantity + 1.

Ai nevoie de o cheie/index unica să știe MySQL când trebuie să actualizeze in loc de inserare. Probabil acea pereche order_id, SKU trebuie făcută cheie unică.

1 Like

Conceptul se numește upsert. Poate in alte contexte o sa te ajute termenul.

3 Likes