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

MYSQL WSTAW lub AKTUALIZUJ JEŻELI

Najpierw dodaj UNIQUE ograniczenie dotyczące nazwy, kodu kreskowego, przedmiotu, lokalizacji i ceny.

ALTER TABLE  tableX
  ADD CONSTRAINT tableX_UQ
    UNIQUE (name, barcode, item, location, price) ;

Następnie możesz użyć INSERT INTO ... ON DUPLICATE KEY UPDATE :

INSERT INTO tableX
  (name, barcode, item, location, price, quantity, date)
VALUES
  (?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
  quantity = CASE WHEN VALUES(date) > date
               THEN quantity + VALUES(quantity)        -- add quantity
               ELSE quantity                           -- or leave as it is
             END
, date = CASE WHEN VALUES(date) > date
               THEN VALUES(date) ;                     -- set date to new date
               ELSE date                               -- or leave as it is
             END 

REPLACE może być również użyty, ale istnieją różnice w zachowaniu (co ma szczególne znaczenie, jeśli masz klucze obce). Aby uzyskać szczegółowe informacje, zobacz pytanie "WSTAW IGNORE ” vs „WSTAW… PRZY AKTUALIZACJI ZDUPLIKOWANEGO KLUCZA” oraz odpowiedź @Bill Kawin, która omawia różnice między INSERT IGNORE , INSERT ... ON DUPLICATE KEY i REPLACE .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połączenie bazy danych z MySQL wygasa nawet po ustawieniu c3p0.testConnectionOnCheckout=true

  2. Jak samodzielnie zaktualizować PHP+MySQL CMS?

  3. Podwójny mistrz MySQL

  4. Ostatnie x wpisów na blogu - ale tylko raz na użytkownika

  5. Wygeneruj plik Excel w PHP po echo