Mysql
 sql >> Baza danych >  >> RDS >> Mysql

WDROŻENIE WDROŻENIA/PROJEKTOWANIA ZDUPLIKOWANYCH KLUCZOWYCH AKTUALIZACJI

Najpierw potrzebujesz unikalnego indeksu na (usersessid, product_id) . Nie jestem pewien, czy faktycznie używasz automatycznie generowanej kolumny id , ale jeśli nie, zmień klucz podstawowy na (usersessid, product_id) . Następnie zamiast uruchamiać oddzielną UPDATE zapytanie, uruchom tylko jedno INSERT zapytanie:

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

Żeby było jasne, jak powinien wyglądać unikalny indeks:

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

Lub klucz podstawowy:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATE_FORMAT w zapytaniu w CodeIgniter przy użyciu Active Record nie działa

  2. mysqli_affected_rows() zwraca -1, ale zapytanie działa

  3. Możliwe błędy PDOException (MySQL 5)?

  4. Najlepsza praktyka tworzenia zbiorczego dla ogromnych rekordów

  5. PHP - Utwórz pole wyboru, używając rekordów z bazy danych MySQL jako wartości